2016-07-06 1 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은 단일보기에서 사용해야합니다.

UIGestureRecognizer을 사용하려면 각보기에 대해 동일한 방법을 호출하여 하나를 만들어야합니다.

관련 문제