В моем основном контроллере представления у меня есть uislider. и в то же время я назначаю UISwipeGestureRecognizer для self.view, так как я хочу обнаруживать жесты во всем представлении.
Проблема в том, что всякий раз, когда я двигаю ползунок, распознаватель жестов также фиксирует его, а поведение ползунка резкое и неприятное.
Вот мой код (часть жеста)
UISwipeGestureRecognizer* singleSwipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeRight:)];
[singleSwipeRight setDirection:(UISwipeGestureRecognizerDirectionRight)];
singleSwipeRight.numberOfTouchesRequired = 1;
singleSwipeRight.delegate = self;
[self.view addGestureRecognizer: singleSwipeRight];
Как я прочитал в ЗДЕСЬ, чтобы предотвратить это, просто реализуйте следующий делегат:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
if ([touch.view isKindOfClass:[UISlider class]]) {
// prevent recognizing touches on the slider
//NSLog(@"no");
return NO;
}
return YES;
}
Но самое смешное, что это работает только во второй раз, когда я сдвигаю UISlider. Первое пролистывание ВСЕГДА переходит к обработчику распознавания жестов.
Почему? И как это решить?
Спасибо.