在我的主视图控制器中,我有一个 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];
正如我在HERE中所读到的,为了防止这种情况,只需实现以下委托:
- (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 时才有效。第一次滑动总是转到手势识别器处理程序。
为什么?以及如何解决这个问题?
谢谢。