迅速检查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对象(你可以从touchesBegan
, touchesMoved
等方法中获得),如果你的设备是3D Touch,那么touch.maximumPossibleForce
属性将会高于0.不要忘记把它包装进去if #available(iOS 9, *)
都不是;)
感受免费签出这个Peek和Pop教程的更多细节,或这个3D Touch代码示例