在我的主視圖控制器中,我有一個uislider。 ,同時我將UISwipeGestureRecognizer分配給self.view ,因爲我想檢測整個視圖上的手勢。UISlider + UISwipeGestureRecognizer不工作第一次
問題是,無論何時我滑動滑塊,手勢識別器 都會捕獲它,並且滑塊行爲不穩定並且不太好。
這裏是我的代碼(姿態的一部分)
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。第一次刷卡始終轉到gesturerecognizer處理程序。
爲什麼?以及如何解決這個問題?
謝謝。
剛剛檢查過它。日誌說UIView。順便說一句,我用[touch.view類],沒有該視圖的className屬性。不知道如何繼續。 UISlider位於self.view中的另一個UIView內。這可能是原因嗎?如果是這樣,我該如何糾正?任何想法? – GeneCode
是的,所以我刪除了子視圖中的滑塊,現在它工作正常。想知道是否可以檢查另一個視圖中的滑塊。不管怎麼說,多謝拉! – GeneCode
沒有。其實它沒有工作。無論滑塊是否位於子視圖內,第一個視圖仍然會被檢測爲UIView事件,儘管我小心翼翼地觸摸了UISlider。我會調查更多...希望我能找到一些東西。 – GeneCode