快速检查是否可以进行3D Touch

时间:2015-11-13 05:43:08

标签: ios swift 3dtouch

在我的应用程序中,如果设备可以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'条件后的预期'{'

2 个答案:

答案 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对象(您可以使用touchesBegantouchesMoved,...等方法),如果您的设备具有3D Touch功能,则touch.maximumPossibleForce属性将为高于0.不要忘记将其包裹在if #available(iOS 9, *)中;)

感谢免费结帐Peek and Pop tutorial了解更多详情,或sample of 3D Touch code