手势识别器不适用于tableView

时间:2014-04-01 08:20:39

标签: objective-c

tableView以编程方式完成,并且正在听代表们。

手势:

    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapOnTableView:)];
    [self.tableView addGestureRecognizer:tap];



-(void) didTapOnTableView:(UIGestureRecognizer*) recognizer
{
    NSLog(@"ffff");
} 

没有被调用。

3 个答案:

答案 0 :(得分:0)

这应该有效,除非你没有点击tableview,检查是否正确显示tableview,或者添加断点来检查是否添加了手势识别器

答案 1 :(得分:0)

尝试使用界面构建器或此属性multipleTouchEnabled在视图上启用多点触控。

如果那不是你想要的,你可以使用委托功能来接收触摸:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    return YES;
}

(如果你转到这个文件的标题,你可以找到可能有帮助的类似代表)

答案 2 :(得分:0)

问题是UITableView有自己的手势识别器,并且与您添加的手势识别器冲突。您可以通过将UIViewController子类符合<UIGestureRecognizerDelegate>协议并实施以下方法gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:来同时处理手势识别器。

另一方面,你要做的事情很可能是错的。尝试使用UIButton对象而不是手势识别器,在99%的时间内足够。