我遇到了这个问题,据我所知没有解决方案。解决方案必须满足 2 个要求:
1. 捕获 TouchUpInside
事件,而不是 TouchUpOutside
。我需要在手指触摸屏幕时立即采取行动,而不是在抬起屏幕时立即采取行动。
2.我需要手指的位置。这就是为什么我使用 UIView
- 整个屏幕是一个目标。
我试过了:
1. 将我的 UIViewController
设置为 UITapGestureRecognizer
的委托(delegate)。函数 gestureRecognizer:shouldReceiveTouch:
有效,但 locationOfTouch:inView:
始终返回左上角点作为触摸位置。
2. 将 UIView
转换为 UIControl
并调用 addTarget:action:forControlEvents:
也可以,但不返回位置。
3. 子类化 UIGestureRecognizer
。我试过了,但没有用,因为我不知道如何覆盖 touchesBegan:WithEvent:
我觉得自定义手势是唯一的方法,你能给我看一下手册或示例代码吗?或者其他解决方案?感谢您的阅读。
最佳答案
UIPanGestureRecognizer
您可以使用 UIPanGestureRecognizer
来捕获事件。
将手势添加到您的 View 。
//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)
}
关于ios - 跟踪 UIView 中的 TouchUpInside 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33488320/