我已经创建了一个标签并在其上设置了点击手势,但是当我点击它时它会显示错误。
我的代码是.h文件
@interface ViewController : UIViewController
{
UILabel *alabel;
}
@property (strong, nonatomic) UILabel *alabel;
<。>文件中的
- (void)viewDidLoad
{
[super viewDidLoad];
alabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 100, 50)];
alabel.text = @"Drag me!";
alabel.userInteractionEnabled = YES;
UITapGestureRecognizer *tapGesture =[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(labelTap)];
[alabel addGestureRecognizer:tapGesture];
[self.view addSubview:alabel];
}
- (void)labelTap:(UITapGestureRecognizer *)tapGesture {
TouchLabelViewController *touchLabelViewController = [[TouchLabelViewController alloc] initWithNibName:@"TouchLabelViewController" bundle:[NSBundle mainBundle]];
[self presentModalViewController:touchLabelViewController animated:NO];
}
日志显示
2012-10-29 11:19:17.313 DragableControll[795:f803] -[ViewController labelTap]: unrecognized selector sent to instance 0x68956b0
2012-10-29 11:19:17.316 DragableControll[795:f803] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[ViewController labelTap]: unrecognized selector sent to instance 0x68956b0'
答案 0 :(得分:1)
查看您的代码,您错误地将选择器添加到Tap手势
UITapGestureRecognizer *tapGesture =[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(labelTap)];
你应该这样做
UITapGestureRecognizer *tapGesture =[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(labelTap:)];
答案 1 :(得分:0)
你的selector
没有正确添加。你忘了带参数的选择器方法需要提供:最后ie(labelTap :)
编辑:用我的
替换你的行UITapGestureRecognizer *tapGesture =[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(labelTap:)];
在.h文件中注册UIGestureDelegate
答案 2 :(得分:0)
替换以下代码
UITapGestureRecognizer *tapGesture =[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(labelTap:)];
注意:添加Colon Near labelTab即(labelTap :)
答案 3 :(得分:0)
在此更改代码
TapGestureRecognizer alloc] initWithTarget:self action:@selector(labelTap:)];
你选择了(labeltap),但它应该是(labeltap :)