作者:芹牵一线 | 来源:互联网 | 2023-02-01 16:42
我正在开发一个新的iOS应用程序,它应该支持开箱即用的新拖放功能(iOS 11).但是我希望它在旧的(iOS 10)设备上也可以执行.据我所知,设置Deployment Target
iOS 11会阻止应用程序安装在旧设备上.但是,将其设置为iOS 10.3将导致出现错误,并指出Drag and Drop仅适用于iOS 11.0或更高版本.
我的问题是:有没有办法通过提供两个版本(一个有DnD,一个没有遗留)或者告诉xcode忽略旧版本的DnD行,可以让应用程序可用于旧设备?或者这根本不可能?
所有帮助表示赞赏!
1> Rob Napier..:
将所有委托一致性移动到扩展,然后将@available
属性添加到扩展.例如:
@available(iOS 11.0, *)
extension DragBoardViewController : UIDragInteractionDelegate { ... }
如果您将这些一致性写为扩展,Xcode 9将自动为您提供修复 - 添加@available
属性.
请记住,您绝对可以在iOS 10中定义这些委托方法; 他们只是不会被召唤.关键@available
是要防止代码的其他部分在没有先将其包装在#available
支票中的情况下调用它.
探索此问题的一个好方法是下载Apple的示例代码,然后将部署目标设置为10.0.你会看到很多修复 - 它弹出来帮助你完成整个过程,并展示如何在你自己的代码中完成它.