0

Я добавляю как UIPanGestureRecognizer, так и UIPinchGestureRecognizer к тому же представлению. Это, как правило, не вызывает никаких проблем, но потребность в 3 пальца с моим UIPanGestureRecognizer вызывает проблемы:Конфликт UIPanGestureRecognizer (3 пальца) и UIPinchGestureRecognizer

UIPinchGestureRecognizer *pinchGesture = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinched:)]; 
[self.view addGestureRecognizer:pinchGesture]; 

UIPanGestureRecognizer panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panning:)]; 
panGesture.minimumNumberOfTouches = 3; 
panGesture.maximumNumberOfTouches = 3; 
[self.view addGestureRecognizer:panGesture]; 

Иногда пинч жест будет вызван, когда пан должен был. Он работает ~ 50% времени, но что является лучшим способом реализовать эти два жестов на одном и том же представлении, чтобы точность была лучше?

Редактировать: Мне нужен только один жест, который может произойти за раз.

ответ

0

Набор делегатов для жестов для себя и установить ViewController реализовать UIGestureRecognizerDelegate

И добавить этот метод:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer 
{ 
    return YES; 
} 
+0

Я только хочу, чтобы один жест произошел за раз. – Jordan

0

другой пост имеет опечатка, я думаю, но использовать этот

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer 
{ 
    return NO; 
} 

и добавьте это, чтобы другие жесты потерпели неудачу перед тем жестом, который вы хотите запустить

requireGestureRecognizerToFail

Смежные вопросы