繁体   English   中英

iPhone - 检测UITableViewCell子视图的触摸

[英]iPhone - Detect touches on subview of UITableViewCell

我正在使用包含UIImageView子视图的单元格填充UITableView。 我想检测图像视图上的触摸,所以我也添加了一个手势识别器。 然而,没有任何东西被称为。 这是我的代码:

UIImageView *delete = [[UIImageView alloc] initWithFrame:CGRectMake(1.0, 8.0, 33.0, 33.0)];
delete.image = [UIImage imageNamed:@"Delete.png"];
delete.userInteractionEnabled = YES;
delete.contentMode = UIViewContentModeCenter;

UIGestureRecognizer *gesture = [[UIGestureRecognizer alloc] initWithTarget:self action:@selector(deleteTapped)];
gesture.delegate = self;

[delete addGestureRecognizer:gesture];
[self.cellView addSubview:delete];

注意:我在技术上将图像视图添加到容器中,然后将其添加到单元格本身,因此[self.cellView addSubview:delete] 但我有相同的结果直接将图像视图添加到单元格。

根据类似帖子的这个答案,这是iOS 5.0中的一个已知错误; 解决方案是覆盖委托方法以强制手势识别器开始:

修复是在手势识别器的委托中覆盖-gestureRecognizerShouldBegin:并返回YES。 应该在iOS 5.x的未来版本中修复此错误。 只要您没有使用新的UITableViewCell复制/粘贴API,这只是安全的。

我试过这个,但委托方法永远不会被调用。 我已经设置了delegate属性(见上文)并实现了<UIGestureRecognizerDelegate> ,如下所示:

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
    NSLog(@"gesture delegate method called");
    return YES;
}

有没有人知道为什么这仍然不起作用? 或者也许iOS 5.1中这个bug的状态是什么?

尝试为此委托方法返回YES - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer;

如果要检测点击操作,请使用UITapGestureRecognizer

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM