2015-11-13 5 views
1

Странная проблема. Я использую стандартную проверку, чтобы увидеть, имеет ли устройство 3D Touch. Он обернут проверкой iOS9, которая проходит, но не передает .Availableif statement на моем iPhone 6S, который работает под управлением iOS9.1 и имеет функцию 3D Touch, включенную в настройках.Проверка возможности 3D-Touch - Swift

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) The работ за пределами if statement, но не хороший вариант реализации!

ДАЛЕЕ РАССЛЕДОВАНИЯ

Я тестировал код в моем MainViewController и она работала отлично. Это странная ситуация, я нашел работу на данный момент.

+0

Что означает «но не входит в мое утверждение»? – matt

+0

Вопрос обновления, это была поздняя ночь кодирования! – RichAppz

+0

Я до сих пор не знаю, что вы имеете в виду. Я проверил ваш код, и он проходит проверку доступности, выполняет тест «traitCollection.forceTouchCapability» и не выполняет этот тест в хорошем состоянии (потому что у меня нет силы касания). – matt

ответ

1

У меня была та же проблема: я делал эту проверку в viewDidLoad, которая перед объектом имеет traitCollection информации. Отложить проверки и логику до тех пор, пока viewDidLayoutSubviews не работал для меня.

+0

Спасибо JimmyB, когда я получаю шанс, я проверю – RichAppz