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 - 如何使用 init(frame :) with auto layout?) 实例化自定义 UIView 子类

ios - UIAccessibility 删除 UITableViewCells

ios - XC UITesting 因查找 UIElements 而闪烁

ios - iPad:横向呈现 UIImagePickerController 会在关闭时旋转我的其他 View Controller

ios - 在 objective-c 中需要指针对象

ios - 具有核心数据的表格 View 的奇怪行为

ios - 日历应用程序的本地通知限制

ios - 相同的 View Controller 加载两次

iphone - objective-c 的奇怪行为

html - DIV ARIA-LABEl 未被 JAWS 读取