メインのビューコントローラーには、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 をスライドさせた 2 回目にしか機能しません。初めてのスワイプは常にジェスチャ認識ハンドラに行きます。
なんで?そして、これを解決する方法は?
ありがとう。