Ответ 1
Вы ищете translationInView:
, в котором рассказывается, как далеко продвинулась кастрюля, и ее можно протестировать на минимальном расстоянии. Это решение не распространяется на случай, когда вы идете туда и обратно в одном направлении в размере, равном минимальному расстоянию, но если это важно для вашего сценария, это не слишком сложно добавить.
#define kMinimumPanDistance 100.0f
UIPanGestureRecognizer *recognizer;
CGPoint lastRecognizedInterval;
- (void)viewDidLoad {
[super viewDidLoad];
recognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(didRecognizePan:)];
[self.view addGestureRecognizer:recognizer];
}
- (void)didRecognizePan:(UIPanGestureRecognizer*)sender {
CGPoint thisInterval = [recognizer translationInView:self.view];
if (abs(lastRecognizedInterval.x - thisInterval.x) > kMinimumPanDistance ||
abs(lastRecognizedInterval.y - thisInterval.y) > kMinimumPanDistance) {
lastRecognizedInterval = thisInterval;
// you would add your method call here
}
}