ios - 检查函数在 Swift 中是否可用?

标签 ios swift uiaccessibility

我想检测用户是否启用了降低透明度。很简单,您只需调用函数 UIAccessibilityIsReduceMotionEnabled() 并返回一个 Bool。但是我的应用程序针对 iOS 7 和 8,并且此功能在 iOS 7 上不可用。

在 Objective-C 中,这是我检查该函数是否存在的方式:

if (UIAccessibilityIsReduceMotionEnabled != NULL) { }

在 Swift 中,我不知道如何检查它是否存在。根据this answer ,您可以简单地使用可选链接,如果它是 nil 则它不存在,但这显然仅限于 Obj-C 协议(protocol)。 Xcode 6.1 不喜欢这样:

let reduceMotionDetectionIsAvailable = UIAccessibilityIsReduceMotionEnabled?()

它希望您删除 ?。当然,如果您这样做,它会在 iOS 7 上崩溃,因为该功能不存在。

检查这些类型的函数是否存在的正确方法是什么?

最佳答案

在 Swift 2 中添加了对可用性的适当检查。与此处提到的其他选项相比,建议使用此选项。

var shouldApplyMotionEffects = true
if #available(iOS 8.0, *) {
    shouldApplyMotionEffects = !UIAccessibilityIsReduceMotionEnabled()
}

关于ios - 检查函数在 Swift 中是否可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26706915/

相关文章:

ios - IOS存储的问题

ios - 如何创建 cocoapod 库

iOS:检测用户是否在事件工具包中取消了 "Add to Calendar"?

swift - 谷歌地图和谷歌广告 swift

ios - 飞溅动画完成后更改 View Controller

ios - 格式化价格的无障碍标签

ios - Texture Packer pvr.ccz文件

swift - 使用 "if"条件检查多个字符串是否为空或 nil

ios - 有没有办法仅在通过滑动导航时忽略辅助功能元素?