0

内部にいくつかのビューを持つ UIScrollView があります。それをタップすると、タッチがクリーンな領域で発生したのか、サブビューがある領域で発生したのかを理解したいと思います。どうやってやるの?

4

1 に答える 1

0

UITapGestureRecognizer の使用時にどの子ビューがタップされたかを検索で解決策を見つけたと思います

したがって、以下を使用してUITapGestureRecognizerを登録した後:

//        // Intercept all the taps inside the view
        UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc]
                                                 initWithTarget:self
                                                 action:@selector(tapDetected:)];
        tapRecognizer.numberOfTapsRequired = 1;
        tapRecognizer.numberOfTouchesRequired = 1;
        tapRecognizer.cancelsTouchesInView = NO;
        [self addGestureRecognizer:tapRecognizer];

次のコードを含めるだけで十分です。

- (void)tapDetected:(UITapGestureRecognizer*)recognizer
{
    UIView* view = recognizer.view;
    CGPoint loc = [recognizer locationInView:view];
    UIView* subview = [view hitTest:loc withEvent:nil];

    NSLog(@"HIT! in %@",NSStringFromClass([subview class]));
}
于 2012-12-04T17:51:52.777 に答える