ios - 支持旧版本的 iOS

标签 ios xcode ios10.3 ios11

我正在开发一个新的 iOS 应用程序,它应该支持开箱即用的新拖放功能 (iOS 11)。不过,我希望它也可以在旧版(iOS 10)设备上执行。据我了解,将部署目标设置为iOS 11将阻止该应用程序安装在旧设备上。但是,将其设置为 iOS 10.3 会导致出现错误,指出拖放功能仅在 iOS 11.0 或更高版本上可用。

我的问题是:有没有一种方法可以通过提供两个版本(一个带 DnD,一个不带旧版)或告诉 xcode 忽略旧版本的 DnD 行,使该应用程序可用于旧设备?或者这根本不可能?

感谢所有帮助!

最佳答案

将所有委托(delegate)一致性移至扩展,然后将 @available 属性添加到扩展。例如:

@available(iOS 11.0, *)
extension DragBoardViewController : UIDragInteractionDelegate { ... }

如果您将这些一致性编写为扩展,Xcode 9 会自动为您提供修复程序以添加 @available 属性。

请记住,您绝对可以在 iOS 10 中定义这些委托(delegate)方法;他们只是不会被召唤。 @available 的目的是防止代码的其他部分调用它,而不先将其包装在 #available 检查中。

探索这一点的一个好方法是下载 Apple's sample code然后只需将部署目标设置为 10.0.0.您将看到许多修复程序弹出来帮助您完成整个过程,并展示如何在您自己的代码中执行此操作。

关于ios - 支持旧版本的 iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44468330/

相关文章:

ios - 无法附加值并在 Collection View 中显示

objective-c - Xcode 应用卡在横向模式

ios - NSMutableAttributedString 在特定范围的 tableviewcell 中不起作用

ios - 使用 IBAction 选择并按下表格单元格行

ios - 使用 RestKit 0.20 在集合上自定义请求映射

xcode - Flurry 集成构建失败 : Undefined symbols for architecture armv7

ios - 用于 Xcode 托管配置文件设置的 Azure Pipelines 配置 - 可能吗?记录在案?

ios - 应用程序在 iOS 10.3 上 x 时间后收不到 VOIP >

ios - Ionic 4 build 不适用于 ios 10.3

ios - Alamofire 请求自行更改方法名称