是否可以将UITapGestureRecognizer附加到UILabel子类

问题描述

| 我正在尝试将手势识别器附加到我自己的类(该类是UILabel的子类),但是它不起作用。您能帮我了解代码中的错误
 
@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

    

解决方法

        您的代码应该可以正常工作,您唯一需要修复的就是默认情况下UILabel禁用了用户交互,因此手势识别器不会收到任何触摸事件。尝试通过将以下行添加到您的代码中来手动启用它(例如init方法):
self.userInteractionEnabled = YES;
    ,        是的,这是可能的,任何从
UIView
继承的类。 不要忘记启用用户交互。
self.userInteractionEnabled = YES;
    ,        您可以使用以下代码在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,100,30)];
[title_lbl setText:@\"u&me\"];
[title_lbl setUserInteractionEnabled:YES];
[yourView addSubview:title_lbl];
第三步:
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
}
谢谢,