我正在使用 UIPinchGestureRecognizer,它默认使用 2 个手指。如果用户决定执行多任务手势,则捏合手势动作也会被激活。
如果检测到超过四个 UITouch 实例,是否有办法取消捏合手势?
编辑删除了示例代码,因为它是错误的方法。
我正在使用 UIPinchGestureRecognizer,它默认使用 2 个手指。如果用户决定执行多任务手势,则捏合手势动作也会被激活。
如果检测到超过四个 UITouch 实例,是否有办法取消捏合手势?
编辑删除了示例代码,因为它是错误的方法。
由于您没有继承 UIPinchGestureRecognizer,因此您不应该使用touchBegan:withEvent:
. 相反,您应该在发生夹伤时调用的方法中处理它。
- (void)handlePinch:(UIPinchGestureRecognizer *)pinchGestureRecognizer
{
// if there are 2 fingers being used
if ([pinchGestureRecognizer numberOfTouches] == 2) {
// do stuff
}
}
对于多任务手势,numberOfTouches
返回的UIPinchGestureRecognizer
是 2 而不是 4 或 5,因为某些触摸被忽略了。
如果事件有 4 或 5 次触摸,您可以继承UIPinchGestureRecognizer
并覆盖以取消识别器:ignoreTouch:forEvent
- (void) ignoreTouch:(UITouch*)touch forEvent:(UIEvent*)event
{
[super ignoreTouch:touch forEvent:event];
// Cancel recognizer during a multitask gesture
if ([[event allTouches] count] > 3)
{
self.state = UIGestureRecognizerStateCancelled;
}
}