2011-06-15 24 views
26

Ben UILabel alt sınıfı olan kendi sınıfına jest tanıyıcıyı takmak çalışıyorum için UITapGestureRecognizer takmak için mi, ama çalışmıyor. Bana kodunda neyin yanlış olduğunu anlamak için yardımcı olabilirmümkün UILabel alt sınıf


@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 

cevap

68

Kodunuz sorunsuz çalışır, düzeltmek gerekebilir tek şey kullanıcı etkileşim varsayılan olarak UILabel için devre dışı, bu nedenle jest tanıyıcı almaz herhangi dokunma olayları. (Örneğin init yönteminde) kodunuzu bu satır ekleyerek etkinleştirmek elle deneyin:

self.userInteractionEnabled = YES; 
+1

cevaplar için teşekkür ederiz! Dokümanları okumak için 24 saat harcadım ve bu basit numarayı not almadım. Umarım benim için yararlı olmuştur :) – Michael

15

Evet, bu mümkün, Herhangi sınıf UIView den miras.

do'nt kullanıcı etkileşimini sağlamak için unutmak. Sen UILable üzerinde dokunma hareketini eklemek için aşağıdaki kodu

self.userInteractionEnabled = YES; 
+1

Cevabınız için teşekkür ederiz! Dokümanları okumak için 24 saat harcadım ve bu basit numarayı not almadım. Umarım benim için yararlı olur :) – Michael

+0

@Michael: Happen sometime .. :) – Jhaliya

2

kullanabilirsiniz: -

Adım 1:

Delegate "UIGestureRecognizerDelegate" to your viewcontroller.h 

for example: 
    @interface User_mail_List : UIViewController<UIGestureRecognizerDelegate> 

Adım 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]; 

Adım 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]; 

Adım 4:

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

sayesinde