2017-06-10 202 views
1

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

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

所有帮助表示赞赏!

回答

3

将所有代表符合性转移到扩展,然后将@available属性添加到扩展。例如:

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

如果你写这些不合格的扩展,Xcode的9会自动给你解决,其添加的@available属性。请记住,你绝对可以拥有这些在iOS 10中定义的委托方法;他们只是不会被称为。 @available这一点是为了防止代码的其他部分在没有首先打包#available检查的情况下调用它。

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

+0

你救了我一天,谢谢! – Hans