iOS 5 应用程序中对 iOS 6 功能的有条件支持

2023-11-25

如何在应用程序中支持 iOS6 的功能Minimal Deployment Target设置为iOS 5.0?

例如,如果用户拥有 iOS 5,他将看到一个UIActionSheet,如果用户有 iOS 6,他会看到不同的UIActionSheet适用于 iOS 6?你怎么做到这一点? 我有 Xcode 4.5,想要一个在 iOS 5 上运行的应用程序。


您应该始终更喜欢检测可用的方法/功能,而不是 iOS 版本,然后假设方法可用。

See 苹果文档.

例如,在 iOS 5 中要显示模态视图控制器,我们会这样做:

[self presentModalViewController:viewController animated:YES];

在 iOS 6 中,presentModalViewController:animated:的方法UIViewController已弃用,您应该使用presentViewController:animated:completion:在 iOS 6 中,但是你怎么知道何时使用什么?

您可以检测 iOS 版本,并使用 if 语句指示您使用前者还是后者,但是,这是脆弱的,您会犯错误,也许将来更新的操作系统将有一种新的方法来执行此操作。

处理这个问题的正确方法是:

if([self respondsToSelector:@selector(presentViewController:animated:completion:)])
    [self presentViewController:viewController animated:YES completion:^{/* done */}];
else
    [self presentModalViewController:viewController animated:YES];

您甚至可以争辩说您应该更加严格并做类似的事情:

if([self respondsToSelector:@selector(presentViewController:animated:completion:)])
    [self presentViewController:viewController animated:YES completion:^{/* done */}];
else if([self respondsToSelector:@selector(presentViewController:animated:)])
    [self presentModalViewController:viewController animated:YES];
else
    NSLog(@"Oooops, what system is this !!! - should never see this !");

我不确定你的UIActionSheet例如,据我所知,这在 iOS 5 和 6 上是相同的。也许您正在考虑UIActivityViewController进行分享,您可能想回退到UIActionSheet如果您使用的是 iOS 5,那么您可以检查课程是否可用,请参阅here如何做到这一点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS 5 应用程序中对 iOS 6 功能的有条件支持 的相关文章

  • (Kiss)XML xpath 和默认命名空间

    我正在开发一个 iPhone 项目 需要解析一些 xml xml 可能包含也可能不包含默认名称空间 我需要知道如何解析 xml 以防它使用默认命名空间 由于我需要读取和写入 xml 因此我倾向于使用 KissXML 但我愿意接受建议 这是我
  • ios swift parse:从 3 个类收集数据

    我有这样的结构 User CardSet 带有指向 User objectId 的指针 user 和 col name 带有点 cards 的卡片到 Card Set objectId 和列 name 我想选择所有卡数据 包括当前用户的卡集
  • Objective-C NSString for 循环与characterAtIndex

    我试图逐个字符地循环遍历 NSString 但出现 EXC BAD ACCESS 错误 您知道如何正确执行此操作吗 我已经在谷歌上搜索了几个小时但无法弄清楚 这是我的代码 m self textLength self text length
  • 如何让UITextView背景线与文字对齐?

    我正在尝试绘制 UITextView 的背景线 这是我用来画这些线的代码 CGContextBeginPath context CGContextSetStrokeColorWithColor context self horizontal
  • AVAssetExportSession 无法导出从 iCloud 下载的视频

    我正在尝试创建从用户相册中选择的视频的缩小版本 输出的最大尺寸为 720p 因此 在检索视频时 我使用 mediumQualityFormat as the deliveryMode 如果用户设备中不存在原始视频或其中等质量版本 这会导致
  • iOS 7 上 Safari 浏览器的用户代理

    我只想在带有 Safari 浏览器的 iPhone 和 iPod 中打开我的网站 对于 Chrome Dolphin 等任何其他浏览器 它不应该打开 但目前我从几乎所有设备获得相同的用户代理 对于Safari User Agent Stri
  • Cocoa 应用程序菜单栏不可点击

    我正在我的可可应用程序中构建一个菜单栏 其中包含以下代码 implementation我的自定义应用程序CustomApplication void setUpMenuBar CustomApplication sharedApplicat
  • 构建错误重复符号 arclite.o

    我正在尝试构建我的 Xcode 项目 但收到下面显示的错误 请帮我解决这个错误 提前谢谢您 duplicate symbol non lazy classes in Applications Xcode app Contents Devel
  • ReactiveCocoa 将 SignalProducers 合二为一

    我正在使用 ReactiveCocoa 并且我有几个 SignalProducers let center NSNotificationCenter defaultCenter let signalProducer1 center rac
  • 将 NSData 转换回音频文件

    我已经转换了我的 caf音频文件到NSData使用以下代码行对象 NSData audioData NSData dataWithContentsOfFile MyRecorderFilePathURL path options 0 err
  • 在 appdelegate 中呈现多个模态视图

    我想在应用程序收到 application UIApplication application didReceiveRemoteNotification NSDictionary userInfo 中的每个推送消息后呈现一个 modalvi
  • UIPickerView selectRow 未按预期工作

    我创建了一个UIPickerView它有两个组件 第一个组件 A 的行数固定为 13 另一个组件 B 的行数可变 具体取决于 A 中选择的行 加载时UIPickerView我调用以下命令 以便我可以在两个组件中默认选择 但是我遇到的问题是只
  • 为什么是 javascript:history.go(-1);无法在移动设备上工作?

    首先 一些背景 我有一个向用户呈现搜索页面 html 表单 的应用程序 填写标准并单击 搜索 按钮后 结果将显示在标准部分下方 在结果列表中 您可以通过单击将您带到新页面的链接来查看单个结果的详细信息 在详细信息页面中 我添加了一个 返回结
  • 如何在代码中编辑约束

    我有一个以 100 开始宽度限制的网页 当用户单击按钮时 我想将约束更改为 200 我试过这个 NSLayoutConstraint constrain NSLayoutConstraint constraintWithItem self
  • 如果我使用自定义 UITableViewCell,是否需要设置 heightForRowAtIndexPath?

    如果我使用自定义 UITableViewCell 是否需要设置 heightForRowAtIndexPath 在我的 NIB 中 我已经设置了单元高度 当我覆盖 heightForRowAtIndexPath 时 单元格的内容不会出现 即
  • Objective-C 中发送给对象的消息可以被监听或者打印出来吗? [复制]

    这个问题在这里已经有答案了 可能的重复 Objective C 中拦截方法调用 https stackoverflow com questions 1618474 intercept method call in objective c 如
  • 如何解决 Xcode 5 中的红色(已移动)文件?

    在 Xcode 4 中 当您要移动文件时 可以通过单击右侧菜单中的按钮并通过 Finder 选择新位置来解析文件的新位置 在 Xcode 5 中 右侧菜单中没有按钮 我还没有找到任何方法通过右键单击文件或顶部菜单栏选项来指定文件的新位置 在
  • iOS:如何知道 reloadData() 已完成其任务?

    我想滚动到给定索引 self boldRowPath 但是当我调试时scrollToRow之前执行reloadData 如何知道reloadData已完成 func getAllTimeEvent self arrAllTimeEvent
  • 像 TraceGL 一样分析 Objective C 中的代码路径?

    TraceGL 是一个非常简洁的项目 它允许 JS 程序员跟踪 Javascript 中的代码路径 它看起来像这样 我想为 Objective C 构建类似的东西 我知道运行时使跟踪方法调用变得相当容易 但是我如何跟踪控制流 例如 在上面的
  • 隐藏选项卡栏项目并对齐其他选项卡项目

    在我的应用程序中 我有 4 个选项卡栏项目 我正在 XIB 文件中添加这 4 个选项卡栏项目 最初我必须显示 3 个选项卡栏项目 同步后我必须在我的应用程序中显示第 4 个选项卡栏项目 因此 为此 我使用以下代码隐藏第四个选项卡栏项目 se

随机推荐

  • Tomcat 7 tomcat-users manager-script /deploy 示例

    我正在尝试让管理器 部署在新安装的 Tomcat 7 0 34 上工作 但是当我尝试通过执行 PUT 进行部署时 我不断收到 403http localhost 8080 manager deploy 我还没有在 Tomcat 7 中使用它
  • Angular - POST 上传的文件

    我在用着Angular 打字稿将文件与 JSON 数据一起发送到服务器 下面是我的代码 import Component View NgFor FORM DIRECTIVES FormBuilder ControlGroup from an
  • Python:在“exec”环境中奇怪的“NameError:名称...未定义”

    我有信心至少对 Python 的作用域系统有一些基本的了解 现在我收到一个错误 不幸的是到目前为止我什至无法编写一个好的代码片段来进行复制 我尝试在一个新的小项目中重现它 但一切都按我的预期进行 我只能描述我所做的事情 希望有人能发现一种模
  • 是否可以在运行时将参数传递给 python 生成的 exe?

    我正在尝试文件 I O 我有一个小型练习程序 运行时会创建一个文本文件 我用 pyinstaller 打包它 这样双击 exe 就会创建一个新文件夹 并在其中放置一个带有 hello world 的文本文件 十分简单 然后我开始想知道mai
  • 如何使用 Boost Asio 减少编译时间

    Boost Asio 是一个很棒的库 但它有一个巨大的缺点 编译时间极慢 一个HTTP协议的简单实现 真的很简单 大约1k行代码 在GCC 4 4下编译需要大约13 5s 我尝试使用 PCH 但它并没有太多地改善编译时间 大约仅 1 秒 那
  • azure api-apps、logic-apps、web-apps 和 azure function 之间的区别

    azure API 应用程序 逻辑应用程序 Web 应用程序和 azure 函数之间有什么区别 这对开发者来说有什么不同 逻辑应用程序 逻辑应用提供了一种在云中简化和实施可扩展集成和工作流程的方法 它提供了一个可视化设计器 可以将流程建模并
  • 将选项传递给 ES6 模块导入

    是否可以将选项传递给 ES6 导入 这句话怎么翻译 var x require module someoptions to ES6 没有办法用一个单一的方法来做到这一点import声明 它不允许调用 所以你不会直接调用它 但你基本上可以做与
  • 在 Postgres 中聚合多个字段时填充缺失的行

    我每天使用 Postgres 汇总一组产品的销售额 不仅需要知道何时发生销售 还需要知道何时不发生销售以进行进一步处理 SELECT sd date COUNT sd sale id AS sales sd product FROM sal
  • 在 OpenCV 中写入 AVI 文件

    网上有示例 Learn OpenCv O reilly 中给出了代码 经过多次尝试后 out avi 文件写入了 0 字节 我想知道我哪里出错了 以下是我使用的代码 int main int argc char argv CvCapture
  • 在 XML 中找不到未封闭的元素

    我有一个很大的 XML 文件 18MB 显然其中有一个标签未关闭 我知道这一点是因为当我运行 W3C 标记验证工具 validator w3 org 时 出现以下错误 You may have neglected to close an e
  • 透明 ARGB 十六进制值

    中的颜色this表全部不透明 我猜的价值A被设定为FF 透明度的代码是什么 例如这个颜色FFF0F8FF AliceBlue 为透明代码如 F0F8FF 以下是 到十六进制值的表格 Example 对于 85 的白色 您可以使用 D9FFF
  • 如何使用 jquery 同位素按日期排序(新)

    请原谅我 因为我对 JS 有点新手 只知道足够的操作 对于那些熟悉同位素的人来说 http isotope metafizzy co docs sorting html 我在页面顶部有一个按日期排序的按钮 同位素找到元素 span clas
  • Javascript 非阻塞脚本,为什么不简单地将所有脚本放在 标记之前?

    为了避免 javascript 阻塞网页渲染 我们是否可以将所有 JS 文件 代码放在关闭之前加载 执行 tag 所有的 JS 文件和代码只有在整个页面渲染完成后才会下载并执行 所以需要像这篇文章中建议的技巧吗 非阻塞技术加载JS文件 他基
  • Yup 模式中的可选字段验证

    我在用着react hook form with yup用于我的表单验证并希望某些字段是可选的 空 按照他们的文档 我正在使用nullable and optional 但它仍在得到验证 export const updateAddress
  • 如何在单击按钮时从一个视图控制器导航到另一个视图控制器?

    我是 iOS 应用程序开发新手 请帮助我如何从一开始view controller到另一个view controller单击按钮时 按照以下步骤 让按钮选择器为 button addTarget select action selector
  • Android Auto - 语音 - 无法执行“在 [y] 上播放 [x]”

    我在使用 在 app 上播放 歌曲 命令时遇到问题 具体来说 Android Auto 无法识别 应用程序 我收到一条音频语音消息 不知道如何帮助在应用程序上播放歌曲 因此 语音识别工作正常 正如我所说的歌曲和应用程序一样 但是与应用程序的
  • 无法使用 OpenMPI 安装 mpi4py:无法编译 MPI 程序

    这是我在这里发表的第一篇文章 如果我的风格有误 请道歉 我一直在尝试使用 python 3 6 在 Ubuntu 16 04 上安装 mpi4py 因为 SU2 需要它进行并行处理 我下载了mpi4py并尝试从源代码构建 因为我想使用我配置
  • 如何配置 Jenkins 以在工作区中显示我的日志?

    我正在使用 Jenkins 进行 CI 并且希望能够公开日志 这样我们就不必通过 telnet 到 CI 框来查看发生了什么 有一个插件可以做到这一点吗 或者我只需要写一个脚本 我的答案是关于读取应用程序服务器 容器日志文件不同的盒子比詹金
  • Vue方法滚动div到顶部

    我在学习vue 我有以下方法 将聊天消息添加到 div 中id toolbar chat 这个 div 允许在 y 轴上滚动 我希望每次添加新消息时 div 都能跳到顶部 为什么我的 JS 不起作用 document getElementB
  • iOS 5 应用程序中对 iOS 6 功能的有条件支持

    如何在应用程序中支持 iOS6 的功能Minimal Deployment Target设置为iOS 5 0 例如 如果用户拥有 iOS 5 他将看到一个UIActionSheet 如果用户有 iOS 6 他会看到不同的UIActionSh