2016-07-06 6 views
1

UITapGestureRecognizer私はUIViewが画面上でタップされたことを検出していますが、メインビューにあるサブビュータップを検出するにはどうすればよいですか?提案してください。UITapGestureRecognizerは、どのUIViewが画面上でタップされたかを検出するためのものです

Inside View did load :- 

UITapGestureRecognizer *viewTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(actionForViewTapped:)]; 
    [self.view addGestureRecognizer:viewTapRecognizer]; 


-(void) actionForViewTapped:(UITapGestureRecognizer*)sender { 
    NSLog(@"view tapped"); 
    UIView *view = sender.view; 
    NSLog(@"view tag is %lu", view.tag); //Always prints parent view tag. 

    if(view.tag == 10){ 
     NSLog(@"tag1 tapped"); // not called 
    } 
    if(view.tag == 20){ 
     NSLog(@"tag 2 tapped"); // not called 
    } 
} 

答えて

3

次のコードを使用してサブビューを検出できます。私はサンプルプロジェクトの作成をテストしました。

-(void) actionForViewTapped:(UITapGestureRecognizer*)sender { 
    NSLog(@"view tapped"); 
    UIView *view = sender.view; 
    CGPoint loc = [sender locationInView:view]; 
    UIView* subview = [view hitTest:loc withEvent:nil]; 
    NSLog(@"view tag is %lu", subview.tag); //will print Subview tag. 

    if(view.tag == 10){ 
     NSLog(@"tag1 tapped"); 
    } 
    if(view.tag == 20){ 
     NSLog(@"tag 2 tapped"); 
    } 
} 
0

UIGestureRecognizerを1つのビューで使用します。

UIGestureRecognizerを使用する場合は、ビューごとに同じメソッドを呼び出す必要があります。

関連する問題