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