1

整个星期都在添加点击手势识别器,但我去做这个,就像我做过所有其他的一样,我的应用程序崩溃了。我一定是错过了什么,但对于我的生活,我找不到它是什么。我已经阅读了十几篇关于这个错误的 SO 文章,但没有任何帮助。

这段代码:

@interface wwfpViewController ()
@property (nonatomic, strong) UIView * firstScreen;
@end

@implementation wwfpViewController

@synthesize firstScreen;

- (void)viewDidLoad {
    [super viewDidLoad];
    firstScreen=[[UIView alloc] initWithFrame:self.view.frame];
    [firstScreen setBackgroundColor:[UIColor redColor]];
    [self.view addSubview:firstScreen];

    UITapGestureRecognizer * tap=[[UITapGestureRecognizer alloc] initWithTarget:firstScreen action:@selector(onTap:)];
    [tap setNumberOfTapsRequired:1];
    [firstScreen addGestureRecognizer:tap];
}

- (void) onTap:(UIGestureRecognizer*) recogniser {
    NSLog(@"tap: %@",recogniser);
}

@end

生成此错误:

2013-08-01 12:50:11.027 tyrionSwipe[27336:11303] -[UIView onTap:]: unrecognized selector sent to instance 0xe52c4a0
2013-08-01 12:50:11.029 tyrionSwipe[27336:11303] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIView onTap:]: unrecognized selector sent to instance 0xe52c4a0'
*** First throw call stack:
(0x1c91012 0x10cee7e 0x1d1c4bd 0x1c80bbc 0x1c8094e 0x2dd85a 0x2dc99b 0x2de0df 0x2e0d2d 0x2e0cac 0x2d8a28 0x45972 0x45e53 0x23d4a 0x15698 0x1becdf9 0x1becad0 0x1c06bf5 0x1c06962 0x1c37bb6 0x1c36f44 0x1c36e1b 0x1beb7e3 0x1beb668 0x12ffc 0x295d 0x2885 0x1)
libc++abi.dylib: terminate called throwing an exception

任何人都可以帮忙吗?

编辑:我打错了!哎呀。即使没有错字,我仍然会收到此错误。

4

3 回答 3

6

这只是一个错字将您的方法重命名为onTap to tap或您的选择器从tap:重命名为onTap:

看看目标,我很确定你的意思是自我,因为 firstScreen 只是一个 UIView

于 2013-08-01T11:53:49.540 回答
0

您正在调用错误的选择器。您创建了一个带有名称onTap和调用的选择器tap

UITapGestureRecognizer * tap=[[UITapGestureRecognizer alloc] initWithTarget:firstScreen action:@selector(tap:)];

用这个

UITapGestureRecognizer * tap=[[UITapGestureRecognizer alloc] initWithTarget:firstScreen action:@selector(onTap:)];
- (void) onTap:(UIGestureRecognizer*) recogniser {
    NSLog(@"tap: %@",recogniser);
}
于 2013-08-01T12:36:06.897 回答
0

您的目标是 firstScreen,您的选择器在 wwfpViewController 中定义。您应该将目标更改为自我。firstScreen 是一个 UIView。

-[UIView onTap:] 是它抱怨的未定义。

于 2013-08-01T14:00:52.257 回答