在uitableview部分触摸uiimage无法检测到

时间:2014-09-14 23:28:33

标签: ios objective-c uitableview uigesturerecognizer

我想在UIImageView中为UITableViewCell添加手势识别器。

我已将这个单元格子类化,并实现了手势代码,但它似乎没有起作用。

这是我的子类.m文件的代码:

- (id)initWithCoder:(NSCoder *)coder {
  self = [super initWithCoder:coder];
  if (self) {
    [self.settingsView setUserInteractionEnabled:YES];
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didRecognizeTapOnSettings)];
    [tap setNumberOfTouchesRequired:1];
    [tap setNumberOfTapsRequired:1];
    [self.settingsView addGestureRecognizer:tap];
  }
  return self;
}

我正在使用initwithcoder,因为我正在使用故事板,而且这似乎比initwithframe好得多。由于一些奇怪的原因,didRecognizeTapOnSettings没有被调用。我也在UIGestureRecognizer文件中设置了.h的代理。

2 个答案:

答案 0 :(得分:0)

尝试使用

[tap setMinimumPressDuration:0.1f];

然后你说你正在设置你的代表手势然后如果你打算使用你的委托方法tapGesture你应该委托自己。

tap.delegate = self;

视图中的层次结构是什么?您的UITableViewCell可能正在捕获tap事件而不是UIImageView。作为实验,尝试在UITableViewCell contentView中禁用userInteractions,假设您在单元格的contentView中添加了UIImageView。

如果有效,请告诉我

答案 1 :(得分:0)

IBOutlets尚未在init方法中设置,因此self.settingsView将为零。将你在if(self)块中的代码移动到awakeFromNib,然后它应该可以工作。