迅速检查3D Touch是否可能

在我的应用程序中,我将显示设置,只有设备可以3D Touch才能看到。 目前我检查,如果该设备有ios9。

if #available(iOS 9.0, *) 

问题是,例如,iPhone 6有iOS 9,但没有3D Touch。 我怎样才能快速检查3D Touch的可能性?

我发现这个post,但没有迅速的解决scheme: 检查是否支持3D触摸,并在iOS9设备上启用

还有一个问题。 现在我想检查一下iOS 9和3D Touch是否可用。 我试试这个:

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

但是我总是得到这个错误:

在'if'条件之后预期'{'

试试这个swift代码, self是指你的UIViewController

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

是的, if self.traitCollection.forceTouchCapability == UIForceTouchCapability.Available将工作,只要确保将其包装在一个if #available(iOS 9, *)

所以Peek和Pop的一个例子是:

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

此外,如果你有一个UITouch对象(你可以从touchesBegantouchesMoved等方法中获得),如果你的设备是3D Touch,那么touch.maximumPossibleForce属性将会高于0.不要忘记把它包装进去if #available(iOS 9, *)都不是;)

感受免费签出这个Peek和Pop教程的更多细节,或这个3D Touch代码示例