应用程序在响应tapgesture时崩溃

时间:2013-06-16 10:17:51

标签: ios objective-c

基本上,我有一个带有xib的UIViewController,用于在UIScrollView中保存内容。这将从RSS源填充。这按预期工作。我希望点击UIView,视图控制器拥有响应点击并继续前进。但是,点按应用“无法识别的选择器发送到实例”错误会导致应用崩溃。我真的不知道发生了什么。

xib视图控制器的.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中只放了一个简单的圆形按钮并将其附加到IBAction上 - 它也会崩溃,所以我认为我的xib设置有问题,但我不知道是什么。 .h中的那些属性从保存滚动视图的VC中填充得很好,因此xib显然知道它与之关联的文件,因此我无法弄清楚为什么它会崩溃并在点击时抛出该错误。

2 个答案:

答案 0 :(得分:1)

解决方法是:

 UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapGesture:)];

注意选择器末尾的:

实际上,您的操作方法签名是:

- (void) singleTapGesture:(UITapGestureRecognizer *)gesture;

@selector(singleTapGesture)

宁可识别:

- (void) singleTapGesture;

希望这可以澄清这个问题。

答案 1 :(得分:0)

好吧,我从来没有真正弄明白究竟是什么导致了崩溃 - 所以我将手势识别器添加到对象中,然后构建它们并且一切都很好。不是我想怎么做(试图将它保存在对象的类定义中)但是无论如何。也许这会帮助别人。