问题描述
|
我正在尝试将手势识别器附加到我自己的类(该类是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
}
谢谢,