【发布时间】:2012-07-01 14:03:33
【问题描述】:
在我的主视图控制器中,我有一个 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 时才有效。 第一次滑动总是转到手势识别器处理程序。
为什么?以及如何解决这个问题?
谢谢。
【问题讨论】:
标签: xcode delegates uislider uiswipegesturerecognizer