Swift 2:检查touchesBegan中的触摸类型

时间:2015-10-18 14:59:53

标签: swift2 uitouch

在Swift 2中,我使用touchesBegan方法Set<UITouch>。现在,在方法中我想检查它是否是点按/触摸,3D触摸..

我尝试在第一个.phase上使用UITouch,但这没有任何结果。我该如何检查用户的触摸类型?

1 个答案:

答案 0 :(得分:1)

单独查看touchesBegan您无法检查这一点。只有在用户第一次触摸屏幕时才会调用该方法。系统无法知道之后会发生什么(如果用户再次抬起手指,或者如果他移动手指,或者他是否用力按压等)。

您还必须查看touchesMovedtouchesEnded并查看其中发生的情况。

例如:

1)如果locationInViewtouchesBegan中的触摸touchesEnded属性大致相同,则触摸为点击。胜利者完全相同,因为即使用户只是点击屏幕,手指也会移动一点点。

2)如果locationInViewtouchesBegan中的触摸touchesEnded属性不同,则触摸为平移滑动

3)触摸是 ForceTouch ,如果触摸强迫&#39;财产大于一定数额。这仅在touchesMoved中可见。在touchesBegan中,force属性始终为0。当然force仅适用于提供该功能的设备。

如果您想亲自检测 ForceTouch ,可以这样做:

override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
    guard let touch = touches.first else { return }
    if traitCollection.forceTouchCapability == .Available {
        if touch.force == touch.maximumPossibleForce {
            print("This is a force touch")
        }
    }
}

请注意,只要用户按下屏幕,就会连续调用此功能。如果您想在检测到强制触摸时执行一次代码,则必须注意只执行一次代码,直到调用touchesEnded为止。