Verificación rápida si 3D Touch es posible.

En mi aplicación mostraré la configuration, que solo debería ser visible, si el dispositivo puede 3D Touch. En el momento que verifiqué, si el dispositivo tiene ios9.

if #available(iOS 9.0, *) 

El problema es que, por ejemplo, el iPhone 6 tiene iOS 9 pero no tiene 3D Touch. ¿Cómo puedo verificar la posibilidad de 3D Touch con Swift?

encontré esta publicación, pero no hay una solución rápida: comtesting si se admite y habilita 3D touch en el dispositivo iOS9

Una pregunta más. Ahora quiero verificar si iOS 9 y 3D Touch están disponibles. Intento esto:

 if (#available(iOS 9.0, *)) AND (is3DTouchAvailable() == true) { 

Pero siempre obtengo este error:

Se espera que la condición '{' después de 'si'

Pruebe este código rápido, se refiere a su UIViewController

 func is3DTouchAvailable() -> Bool { return self.traitCollection.forceTouchCapability == UIForceTouchCapability.Available } 

Sí, if self.traitCollection.forceTouchCapability == UIForceTouchCapability.Available funcionará, solo asegúrese de completarlo en if #available(iOS 9, *)

Entonces, un ejemplo para Peek and Pop:

 override func viewDidLoad() { super.viewDidLoad() if #available(iOS 9, *) { if (traitCollection.forceTouchCapability == .Available) { if let collectionView = self.collectionView { registerForPreviewingWithDelegate(self, sourceView: collectionView) } } } } 

Además, si tiene un object UITouch (puede tenerlo desde un método como touchesBegan , touchesMoved , …) si su dispositivo tiene 3D Touch capaz, la propiedad touch.maximumPossibleForce será mayor que 0. No olvide touch.maximumPossibleForce en a if #available(iOS 9, *) neither;)

Siéntase libre de pagar este tutorial Peek and Pop para más detalles, o esta muestra de código 3D Touch