UIGestureRecognizerを利用して、たとえばドラッグ(パン)を検知したいときに
同じUIView上にあるスライダーなどの他のUI部品と干渉してしまい
期待通りの動きをしないことがあります。
回避方法は以下の通りです。
【ViewController1.m】
- (void)viewDidLoad
{
[super viewDidLoad];
// Pan
UIPanGestureRecognizer *panGesture =
[[UIPanGestureRecognizer alloc] initWithTarget:
self action:@selector(handlePanGesture:)];
panGesture.delegate = self;
[self.view addGestureRecognizer:panGesture];
[panGesture release];
}
- (void) handlePanGesture:(UIPanGestureRecognizer*) sender
{
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if ([touch.view isKindOfClass:[UISlider class]]) {
// prevent recognizing touches on the slider
return NO;
}
return YES;
}
【ViewController1.h】
@interface ViewController1 : UIViewController <UIGestureRecognizerDelegate>