Swift2 Swift 2:检查触摸中的触摸类型开始
在Swift 2中,我使用Swift2 Swift 2:检查触摸中的触摸类型开始,swift2,uitouch,Swift2,Uitouch,在Swift 2中,我使用设置的触摸开始方法。现在,在这个方法中,我想检查它是否是一个点击/触摸,一个3D触摸 我试着在第一个UITouch上使用.phase,但结果一无所获。如何检查用户的触摸类型?您不能仅通过查看触摸开始来检查。该方法仅在用户第一次触摸屏幕时调用。系统无法知道之后会发生什么(如果用户再次抬起手指,或者移动手指,或者用力按压等) 您还必须查看touchesMoved和touchesend并检查那里发生了什么 例如: 1) 如果在touchesbeated和touchesend中
设置的触摸开始
方法。现在,在这个方法中,我想检查它是否是一个点击/触摸,一个3D触摸
我试着在第一个UITouch
上使用.phase
,但结果一无所获。如何检查用户的触摸类型?您不能仅通过查看触摸开始
来检查。该方法仅在用户第一次触摸屏幕时调用。系统无法知道之后会发生什么(如果用户再次抬起手指,或者移动手指,或者用力按压等)
您还必须查看touchesMoved
和touchesend
并检查那里发生了什么
例如:
1) 如果在touchesbeated
和touchesend
中的touchslocationInView
属性或多或少相同,则触摸是轻触。这两种方法不会完全相同,因为即使用户只是轻触屏幕,手指也会移动一点点
2) 如果触摸的locationInView
属性在touchesBegined
和toucheSend
中不同,则触摸是平移或滑动
3) 如果触摸的“力”属性大于一定量,则触摸为ForceTouch。这仅在触摸移动时可见。在touchsbegind
中,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")
}
}
}
覆盖功能触摸移动(触摸:设置,带事件:UIEvent?){
guard let touch=touch.first else{return}
如果traitCollection.forceTouchCapability==。可用{
如果touch.force==touch.maximumPossibleForce{
打印(“这是强制触摸”)
}
}
}
请注意,只要用户按下屏幕,就会连续调用此函数。如果您想在检测到强制触摸时执行一次代码,请注意只执行一次代码,直到调用touchesend
。谢谢您的详细回答!然后,我将如何注册ForceTouch并对其采取行动?我不想实现peek and pop
或快速操作
,但我希望我的视图对点击或强制触摸做出响应,然后做一些事情。我在回答中添加了一个示例。