我遇到了这个问题,而且我的知识无法解决。解决方案必须满足2个要求:
1.抓住TouchUpInside
事件,而不是TouchUpOutside
。我需要在手指触摸屏幕时立即采取行动,而不是在抬起时采取行动
我需要手指的位置。这就是我使用UIView
的原因 - 整个屏幕是一个目标。
我试过了:
1.设置UIViewController
作为UITapGestureRecognizer
的代理人。函数gestureRecognizer:shouldReceiveTouch:
有效,但locationOfTouch:inView:
始终返回左上角作为触摸位置
2.将UIView
投射到UIControl
并调用addTarget:action:forControlEvents:
也可以,但不会返回该位置。
3.子类化UIGestureRecognizer
。我尝试了这个,但它不起作用,因为我不知道如何覆盖touchesBegan:WithEvent:
我觉得自定义手势是唯一的方法,请您参考手册或示例代码?或者其他解决方案?谢谢你的阅读。
答案 0 :(得分:-1)
UIPanGestureRecognizer
您可以使用UIPanGestureRecognizer
来捕获事件。
将Gesture添加到您的视图中。
//Method to call for your gesture.
self.panRecognizer = UIPanGestureRecognizer(target: self, action: "panView:")
//Set delegate of Gesture
self.panRecognizer.delegate = self
//Add Gesture to the UIView
self.view.addGestureRecognizer(self.panRecognizer)
跟踪用户事件。
//Capture Gesture
func panView(recognizer: UIPanGestureRecognizer){
switch recognizer.state {
case UIGestureRecognizerState.Began: break
case UIGestureRecognizerState.Changed: break
case UIGestureRecognizerState.Ended: break
default:
break
}
}
touchesBegan:
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
//Get Touch Point
let Point = touches.first!.locationInView(self.view)
}