支持旧版本 iOS

Supporting older versions of iOS

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

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

感谢所有帮助!

将所有委托符合扩展,然后将 @available 属性添加到扩展。例如:

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

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

请记住,您绝对可以在 iOS 10 中定义这些委托方法;他们只是不会被调用。 @available 的要点是防止代码的其他部分在没有先将其包装在 #available 检查中的情况下调用它。

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