我使用的是UIPinchGestureRecognizer,默认使用2个手指。如果用户决定执行多任务手势,则也会激活捏合手势操作。
如果检测到超过四个UITouch实例,是否有办法取消捏合手势?
编辑删除了示例代码,因为这是错误的方法。
答案 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;
}
}