【问题标题】:Supporting older versions of iOS支持旧版本的 iOS
【发布时间】:2017-06-10 00:29:04
【问题描述】:

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

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

感谢所有帮助!

【问题讨论】:

    标签: ios xcode ios10.3 ios11


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    猜你喜欢
    • 2013-10-29
    • 1970-01-01
    • 2016-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-15
    • 1970-01-01
    • 2020-12-19
    相关资源
    最近更新 更多