2011-06-15 15 views
26

पर संलग्न करना संभव है, मैं अपनी खुद की कक्षा में इशारा पहचानकर्ता संलग्न करने की कोशिश कर रहा हूं जो UILabel के उप-वर्ग है, लेकिन यह काम नहीं करता है। तुम मुझे समझने के लिए कोड में गलत क्या है मदद कर सकते हैंक्या UITAPGestureRecognizer को UILabel subclass


@interface Card : UILabel { 

} 

- (void) addBackSideWord; 

@end 

#import "Card.h" 

@implementation Card 
- (id)initWithFrame:(CGRect)frame { 

    if ((self = [super initWithFrame:frame])) { 

     UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] 
         initWithTarget:self action:@selector(addBackSideWord)]; 
     [tapRecognizer setNumberOfTouchesRequired:2]; 
     [tapRecognizer setDelegate:self]; 
     [self addGestureRecognizer:tapRecognizer]; 
    } 

    return self; 
} 

- (void) addBackSideWord { 

    //do something 
} 
@end 

उत्तर

68

आपका कोड ठीक काम करना चाहिए, केवल एक चीज आप ठीक करने के लिए आवश्यकता हो सकती है कि उपयोगकर्ता बातचीत डिफ़ॉल्ट रूप से UILabel के लिए अक्षम है, इसलिए इशारा recogniser प्राप्त नहीं होता है किसी भी घटनाओं को स्पर्श करें। मैन्युअल रूप से (init विधि में उदा) अपने कोड को यह पंक्ति जोड़कर इसे सक्षम का प्रयास करें:

self.userInteractionEnabled = YES; 
+1

अपने जवाब के लिए धन्यवाद! मैंने दस्तावेज पढ़ने में 24 घंटे बिताए और इस सरल चाल को ध्यान में नहीं रखा। बस उम्मीद है कि यह मेरे लिए उपयोगी था :) – Michael

15

हां, यह संभव है, किसी भी वर्ग UIView से विरासत में मिला।

उपयोगकर्ता इंटरैक्शन सक्षम करने के लिए मत भूलना।

self.userInteractionEnabled = YES; 
+1

आपके उत्तरों के लिए धन्यवाद! मैंने दस्तावेज पढ़ने में 24 घंटे बिताए और इस सरल चाल को ध्यान में नहीं रखा। बस उम्मीद है कि यह मेरे लिए उपयोगी था :) – Michael

+0

@ माइकल: कुछ समय हुआ .. :) – Jhaliya

2

आप UILable पर टैप जेस्चर जोड़ने के लिए नीचे दिए गए कोड का उपयोग कर सकते हैं: -

चरण 1:

Delegate "UIGestureRecognizerDelegate" to your viewcontroller.h 

for example: 
    @interface User_mail_List : UIViewController<UIGestureRecognizerDelegate> 

चरण 2:

//create you UILable 
UILabel *title_lbl= [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 30)]; 
[title_lbl setText:@"u&me"]; 
[title_lbl setUserInteractionEnabled:YES]; 
[yourView addSubview:title_lbl]; 

चरण 3:

UITapGestureRecognizer *tap= [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(Prof_lbl_Pressed:)];//your action selector 
[tap setNumberOfTapsRequired:1]; 
title_lbl.userInteractionEnabled= YES; 
[title_lbl addGestureRecognizer:tap]; 

चरण 4:

-(void)Prof_lbl_Pressed:(id)sender{ 
    //write your code action 
} 

धन्यवाद,