2012-11-09 47 views
0

我在我的視圖中有5個標籤,分別標記爲1,2,3,4和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

是的!實際上,我沒有測試過這個功能,沒有添加手勢到我們的標籤和任何對象,但是測試後的答案是YES,我可以得出結論,使用** 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會給出標籤的標籤。在投票前仔細閱讀問題。 –

+0

你確定手勢被添加到UILabel?有五個UILable,你會添加五個UITapGestureRecognizer嗎?每個UILabel一個?雖然我認爲給自己添加一個UITapGestureRecognizer將是一個更好的主意。 – sunkehappy

1

首先我添加oneLabeltwoLabel作爲子視圖self.view。然後我認爲沒有必要獲得標籤。

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"); 
}