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

时间:2011-06-15 09:28:49

标签: iphone ios xcode ios4

我正在尝试将手势识别器附加到我自己的类,这是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

3 个答案:

答案 0 :(得分:74)

您的代码应该可以正常工作,您可能需要修复的唯一问题是默认情况下UILabel禁用了用户交互,因此手势识别器不会收到任何触摸事件。尝试通过在代码中添加此行来手动启用它(例如,在init方法中):

self.userInteractionEnabled = YES;

答案 1 :(得分:15)

是的,这是可能的,来自UIView的任何类继承

不要忘记启用用户互动。

self.userInteractionEnabled = YES;

答案 2 :(得分: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
}

感谢,