【发布时间】: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