3D触摸功能检查问题 - Swift

时间:2015-11-13 23:26:12

标签: ios xcode swift swift2 3dtouch

奇怪的问题,我正在使用标准检查来查看设备是否具有3D Touch。它包含在iOS9检查中,但是没有通过我的iPhone 6S上的.Available if statement,它运行iOS9.1并在设置中启用了3D Touch。

if #available(iOS 9.0, *) {
     if traitCollection.forceTouchCapability == .Available {
          registerForPreviewingWithDelegate(self, sourceView: view)
          constantChange = cstInfoBar.constant + 20
     }
}

我设置了一个断点,我收到了以下内容:

(lldb) po traitCollection.forceTouchCapability
error: <EXPR>:1:17: error: 'forceTouchCapability' is only available on iOS 9.0 or newer
traitCollection.forceTouchCapability
                ^
<EXPR>:1:17: note: add 'if #available' version check
traitCollection.forceTouchCapability
                ^
<EXPR>:1:17: note: add @available attribute to enclosing instance method
traitCollection.forceTouchCapability
                ^
<EXPR>:1:17: note: add @available attribute to enclosing extension
traitCollection.forceTouchCapability
                ^
<EXPR>:9:9: warning: initialization of variable '$__lldb_error_result' was never used; consider replacing with assignment to '_' or removing it
    var $__lldb_error_result = __lldb_tmp_error
    ~~~~^~~~~~~~~~~~~~~~~~~~

registerForPreviewingWithDelegate(self, sourceView: view)if statement之外工作,但不是一个很好的选择!

进一步调查

我测试了MainViewController中的代码,它运行得很好。这是一个奇怪的情况,我暂时找到了解决方法。

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题:我正在viewDidLoad进行此检查,这是在对象有traitCollection信息之前。推迟检查和逻辑,直到viewDidLayoutSubviews为我工作。