2

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

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

感谢所有帮助!

4

1 回答 1

5

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

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

如果您将这些一致性编写为扩展,Xcode 9 将自动为您提供 fix-its 以添加该@available属性。

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

一个很好的探索方法是下载Apple 的示例代码,然后将部署目标设置为 10.0。你会看到很多修复它弹出来帮助你完成整个过程并展示如何在你自己的代码中完成它。

于 2017-06-10T15:59:23.540 回答