我正在努力将手势集成到 iPad 的绘图应用程序中。例如,我想用三指向左滑动来撤消绘图步骤。
我在阻止触摸数据转到 touchesBegan:withEvent: 时遇到问题,这会导致在执行手势时在屏幕上进行绘制。
如果我使用 delayTouchesBegan 属性,我可以防止三指滑动传递此触摸数据。然而,当用户试图画一条向左的线时,它也会延迟绘图。这会导致线条的起点远离用户开始绘图的位置。
如何确保我的应用仅延迟三指滑动而不是单指滑动?
UISwipeGestureRecognizer *recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipe:)];
recognizer.numberOfTouchesRequired = 3;
recognizer.direction = UISwipeGestureRecognizerDirectionLeft;
recognizer.delaysTouchesBegan = YES;
[self.view addGestureRecognizer:recognizer];
最佳答案
我找到了解决这个问题的办法。除了使用手势识别器的 delayTouchesBegan 属性,您还可以使用传递到各种触摸方法的 UIEvent 来检测触摸次数。然后将touchBegan:withEvent:、touchesMoved:withEvent:和touchesEnded:withEvent:方法中的 Action 限制为仅在单次触摸时执行。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
//only process touch data if there is a single touch
if ([[event allTouches] count] == 1) {
//draw
}
}
关于ios - 需要延迟 3 指滑动而不是 1 指滑动的触摸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7827860/