1

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

4

2 回答 2

1

修复是这样的:

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

注意:选择器末尾的 。

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

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

尽管

@selector(singleTapGesture)

宁愿确定:

- (void) singleTapGesture;

希望这能澄清问题。

于 2013-06-16T10:21:29.250 回答
0

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

于 2013-06-16T22:12:24.780 回答