【问题标题】:iPhone - Detect touches on subview of UITableViewCelliPhone - 检测对 UITableViewCell 子视图的触摸
【发布时间】:2012-03-16 21:22:13
【问题描述】:

我正在使用包含 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]。但是我直接将图像视图添加到单元格中得到了相同的结果。

根据this 对类似帖子的回答,这是 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 中的状态是什么?

【问题讨论】:

    标签: iphone ios uitableview uigesturerecognizer


    【解决方案1】:

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

    如果你想检测点击动作,请使用UITapGestureRecognizer

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-21
    • 2011-10-01
    • 1970-01-01
    • 2016-09-13
    相关资源
    最近更新 更多