Rob*_*Rob 3 iphone uitableview uigesturerecognizer ios
我正在使用包含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];
Run Code Online (Sandbox Code Playgroud)
注意:我在技术上将图像视图添加到容器中,然后将其添加到单元格本身[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;
}
Run Code Online (Sandbox Code Playgroud)
有没有人知道为什么这仍然不起作用?或者也许iOS 5.1中这个bug的状态是什么?
尝试为此委托方法返回YES - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer;
如果你想检测点击动作使用 UITapGestureRecognizer