2012-11-09 2 views
0

내보기에 각각 1, 2, 3, 4 및 5 태그가있는 5 개의 라벨이 있습니다. 사용자 상호 작용을 활성화하고 탭 제스처를 추가했습니다.도청했을 때 라벨의 태그를 반환

내가 원하는 것은 터치 된 태그의 태그를 가져 오는 것입니다.

나는 이런 식으로 뭔가를하고 있어요 :

tapGesture=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapGestureSelector)]; 

tapGesture.numberOfTapsRequired = 1.0;  

- (void)tapGestureSelector :(id)sender 
{ 
    // I need the tag to perform different tasks. 
    // So that I would like to get the touched label's tag here.  
} 

나는 내 질문에 나를 문의하시기 바랍니다에 명확하지 않다합니다.

도움을 주신 것에 감사드립니다.

답변

1

나는이 방법으로 해결책을 찾을 그리고 그것은 매우 잘 날 위해 일했습니다. 그게 너에게 도움이되기를 바랍니다. 그것은 매우 간단하고 짧습니다.

이 함수를 .m 파일에 추가하면 레이블의 태그를 가져올 수 있습니다. 다시 아주 좋은 제안과 답변의 모든

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *touch=[touches anyObject]; 
    UILabel *label=(UILabel *)touch.view; 

    NSLog(@"Label that is tapped has tag %d",label.tag); 
} 

감사합니다. 나는 항상 내 모든 질문에 대한 좋은 대답을 미래에 얻을 수 있기를 바랍니다. 다시 한번 감사드립니다.

+0

그럼 tapgesture의 사용법은 무엇입니까? UIlabel에 제스처를 추가 할 필요가 없습니다. –

+0

예! 사실, 우리의 레이블과 모든 객체에 제스처를 추가하지 않고이 기능을 테스트하지는 않았지만 테스트 후에 대답에 예를 들자면 ** tochesBegan ** 함수로 우리 레이블의 제스처를 추가 할 필요가 없다고 결론 내릴 수 있습니다. Midhun MP님께 감사드립니다. 고마워. 좋은 하루 되세요. – iOmi

+0

@MidhunMP :: 나는 그것을 업데이트 한대로 나의 대답을 투표하십시오. 기대해 주셔서 감사합니다. – iOmi

1

UILabel 태그에 액세스하려면 tapGestureSelector 방법에 다음 코드를 사용해야합니다.

- (void)tapGestureSelector :(id)sender 
    { 
     UITapGestureRecognizer *gesture = (UITapGestureRecognizer *)sender; 
     int labelTag = gesture.view.tag; 
     NSlog(@"Clicked label %d", labelTag); 

     switch(labelTag) 
     { 
      case 1: 
       NSlog(@"Clicked on label 1"); 
       break; 
      case 2: 
       NSlog(@"Clicked on label 2"); 
       break; 

      //so on 
     } 
    } 
+0

gesture.view는 뷰 제스처가 탭되지 않은 뷰에 추가되었습니다. – sunkehappy

+0

@sunkehappy : 제스처가 UILabel에 추가되었으므로 레이블을 탭하면 'tapGestureSelector'가 작동하고 gesture.view는 UILabel을 제공합니다. label.tag는 label 태그를 제공합니다. downvoting하기 전에 질문을주의 깊게 읽으십시오. –

+0

UILabel에 제스처가 추가 되었습니까? 5 UILable, 당신은 5 UITapGestureRecognizer를 추가 할 것인가? UILabel마다 하나씩? 나는 UITapGestureRecognizer를 self에 추가하는 것이 더 좋은 아이디어라고 생각한다. – sunkehappy

1

첫째로 나는 self.view에 하위 뷰로 oneLabeltwoLabel을 추가했습니다. 그렇다면 태그를 얻을 필요가 없다고 생각합니다.

CGPoint tapPoint = [tapGesture locationInView:self.view]; 

if (CGRectContainsPoint(self.oneLabel.frame, tapPoint)) { 
    NSLog(@"tapped one label"); 
} else if (CGRectContainsPoint(self.twoLabel.frame, tapPoint)) { 
    NSLog(@"tapped two label"); 
} 
관련 문제