UIGestureRecognizerと、他のUI部品との干渉回避方法 | ソーシャルゲーム開発記録ブログ

ソーシャルゲーム開発記録ブログ

30代の孤独なおっさんが一人でソーシャルゲームを開発する、その記録です

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>