四指多任务手势激活UIPinchGestureRecognizer手势

时间:2013-03-21 16:36:21

标签: ios objective-c ipad uigesturerecognizer multitasking-gestures

我使用的是UIPinchGestureRecognizer,默认使用2个手指。如果用户决定执行多任务手势,则也会激活捏合手势操作。

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

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

2 个答案:

答案 0 :(得分:0)

由于您没有为UIPinchGestureRecognizer创建子类,因此您不应该使用touchBegan:withEvent:。相反,您应该在发生捏合时调用的方法中处理它。

- (void)handlePinch:(UIPinchGestureRecognizer *)pinchGestureRecognizer
{
    // if there are 2 fingers being used
    if ([pinchGestureRecognizer numberOfTouches] == 2) {
        // do stuff
    }
}

答案 1 :(得分: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;
    }
}