我正在开发一个新的 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/