支持旧版iOS

时间:2017-06-10 00:29:04

标签: ios xcode ios10.3 ios11

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

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

感谢所有帮助!

1 个答案:

答案 0 :(得分:5)

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

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

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

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

探索此问题的一个好方法是下载Apple's sample code,然后将部署目标设置为10.0。您会看到很多修复程序 - 它会弹出来帮助您完成整个过程并显示如何在您自己的代码中执行此操作。