基本上,我有一个带有 xib 的 UIViewController,用于在 UIScrollView 中保存内容。这是从 RSS 提要中获取的。这按预期工作。我想轻按 View Controller 拥有的 UIView 以响应轻按并继续前进。但是,轻按会使应用程序崩溃并出现“无法识别的选择器发送到实例”错误。我真的不知道发生了什么。
xib 的 View Controller 的 .h 文件如下所示:
@property (nonatomic,retain) IBOutlet UIImageView *article_image;
@property (nonatomic,retain) IBOutlet UILabel *article_title;
@property (nonatomic,retain) IBOutlet UILabel *article_date;
@property (nonatomic,retain) IBOutlet UIActivityIndicatorView *spinner;
@property (nonatomic,retain) NSString *preview_image;
- (void) loadPreviewImage;
然后 .m 文件看起来像这样:
- (void)viewDidLoad {
[super viewDidLoad];
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapGesture)];
singleTap.numberOfTapsRequired = 1;
[self.view addGestureRecognizer:singleTap];
self.view.layer.shadowColor = [UIColor blackColor].CGColor;
self.view.layer.shadowOpacity = 0.6;
self.view.layer.shadowRadius = 1.5;
self.view.layer.shadowOffset = CGSizeMake(0, 0);
}
- (void) singleTapGesture:(UITapGestureRecognizer *)gesture {
NSLog(@"TAPPED!");
}
即使我只在 xib 中放置一个简单的 roundrectbutton 并将其附加到 IBAction - 它会崩溃,所以我认为我的 xib 的设置方式有问题,但我不知道是什么。 .h 中的那些属性从保存 ScrollView 的 VC 中填充得很好,所以 xib 显然知道它与之关联的文件,所以我只是无法弄清楚为什么它会崩溃并在点击时抛出该错误。
最佳答案
修复是这样的:
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapGesture:)];
注意选择器末尾的 :
。
确实,您的操作方法签名是:
- (void) singleTapGesture:(UITapGestureRecognizer *)gesture;
同时
@selector(singleTapGesture)
宁愿识别:
- (void) singleTapGesture;
希望这能澄清问题。
关于ios - 响应点击手势时应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17132223/