我需要知道用户已经开始触摸屏幕然后知道他什么时候不再触摸它了。
使用 touchesBegan 和 touchesEnded ,我可以获得此类信息。但是,如果用户正在滑动他的手指,那么我知道他开始使用 touchesMoved 进行操作。
但是我无法检查他何时不再触摸屏幕。
基本上,用户停止播放后, touchesEnded 不会触发。
有什么想法吗?
我的代码示例:
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
if let touch = touches.first {
print("Finger touched!")
}
super.touchesBegan(touches, withEvent:event)
}
override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
if let touch = touches.first {
print("Finger is swipping!")
}
super.touchesBegan(touches, withEvent:event)
}
override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {
if let touch = touches.first {
print("finger is not touching.") //this will not fire if finger stopped swipping
}
super.touchesBegan(touches, withEvent:event)
}
答案 0 :(得分:2)
你说:
print("finger is not touching.") //this will not fire if finger stopped swipping
如果手指停止移动,它就不会触发。但如果手指离开屏幕(停止触摸),将 ,这就是你所问的(“不再触摸屏幕”)。
答案 1 :(得分:2)
在Swift 3中工作
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
if touches.first != nil {
print("Finger touched!")
}
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
if touches.first != nil {
print("finger is not touching.")
}
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
if touches.first != nil {
print("Touch Move")
}
}
答案 2 :(得分:1)
touchesBegan:withEvent:
始终会被一个或多个手指调用。当事件中的一个或多个手指移动时,touchesMoved:withEvent:
会被触发。当触摸事件中的一个或多个手指从屏幕上移除时,touchesEnded:withEvent:
被触发。最后,如果整个事件无效(即取消),则调用touchesCancelled:withEvent:
。
对于特定活动,您将始终收到一次或多次拨打touchesBegan:withEvent:
,可能会拨打touchesMoved:withEvent
的电话,然后拨打一次或多次touchesEnded:withEvent:
或{{1} }
这里要考虑的一些事情:
touchesCancelled:withEvent:
实现touchesBegan:withEvent:
醇>
要专门回答您的问题,请实施touchesMoved:withEvent
以了解用户何时停止触摸屏幕,其中包含一个或多个触摸事件。