0

我正在使用 UIPinchGestureRecognizer,它默认使用 2 个手指。如果用户决定执行多任务手势,则捏合手势动作也会被激活。

如果检测到超过四个 UITouch 实例,是否有办法取消捏合手势?

编辑删除了示例代码,因为它是错误的方法。

4

2 回答 2

0

由于您没有继承 UIPinchGestureRecognizer,因此您不应该使用touchBegan:withEvent:. 相反,您应该在发生夹伤时调用的方法中处理它。

- (void)handlePinch:(UIPinchGestureRecognizer *)pinchGestureRecognizer
{
    // if there are 2 fingers being used
    if ([pinchGestureRecognizer numberOfTouches] == 2) {
        // do stuff
    }
}
于 2013-03-22T15:07:15.080 回答
0

对于多任务手势,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;
    }
}
于 2014-11-12T11:20:45.603 回答