在我的应用程序中,如果设备可以3D Touch,我将显示设置,这些设置应该是可见的。在我检查的时刻,如果设备有ios9。
if #available(iOS 9.0, *)
问题是,例如iPhone 6有iOS 9但没有3D Touch。如何用swift检查3D Touch的可能性?
我找到了这篇文章,但没有快速解决方案: Check if 3D touch is supported and enabled on the iOS9 device
还有一个问题。 现在我想检查iOS 9和3D Touch是否可用。 我试试这个:
if (#available(iOS 9.0, *)) AND (is3DTouchAvailable() == true) {
但我总是得到这个错误:
'if'条件后的预期'{'
答案 0 :(得分:6)
试试这个快速代码,self
指的是您的UIViewController
func is3DTouchAvailable() -> Bool
{
return self.traitCollection.forceTouchCapability == UIForceTouchCapability.Available
}
答案 1 :(得分:2)
是的,if self.traitCollection.forceTouchCapability == UIForceTouchCapability.Available
可行,只需确保将其打包在if #available(iOS 9, *)
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)
}
}
}
}
此外,如果您有一个UITouch对象(您可以使用touchesBegan
,touchesMoved
,...等方法),如果您的设备具有3D Touch功能,则touch.maximumPossibleForce
属性将为高于0.不要忘记将其包裹在if #available(iOS 9, *)
中;)
感谢免费结帐Peek and Pop tutorial了解更多详情,或sample of 3D Touch code