在Swift 2中,我使用touchesBegan
方法Set<UITouch>
。现在,在方法中我想检查它是否是点按/触摸,3D触摸..
我尝试在第一个.phase
上使用UITouch
,但这没有任何结果。我该如何检查用户的触摸类型?
答案 0 :(得分:1)
单独查看touchesBegan
您无法检查这一点。只有在用户第一次触摸屏幕时才会调用该方法。系统无法知道之后会发生什么(如果用户再次抬起手指,或者如果他移动手指,或者他是否用力按压等)。
您还必须查看touchesMoved
和touchesEnded
并查看其中发生的情况。
例如:
1)如果locationInView
和touchesBegan
中的触摸touchesEnded
属性大致相同,则触摸为点击。胜利者完全相同,因为即使用户只是点击屏幕,手指也会移动一点点。
2)如果locationInView
和touchesBegan
中的触摸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
为止。