UILabel与UITableViewCell块中的Gesture Recognizer阻止了didSelectRowAtIndexPath

时间:2014-10-15 21:53:53

标签: ios uitableview uilabel uitapgesturerecognizer didselectrowatindexpath

我在UITapGestureRecognizer内使用了一些UITableViewCell的UILabel。 GestureRecognizer效果很好。但是当我点击标签时,我希望didSelectRowAtIndexPath:也应该执行。或者甚至只是indexPathForSelectedRow()方法应该给我选定的行。

设置cancelsTouchesInView = false无效!

这可能吗?现在indexPathForSelectedRow()方法返回nil。 谢谢

1 个答案:

答案 0 :(得分:3)

您为什么使用UITapGestureRecognizer?如果要使用它,请尝试将标签标记设置为label.tag=indexpath.row。所以你可能会得到你正在看的价值。关于我自己的意见,我将删除uitapgesturerecognizer并直接使用didselectrowatindexpath方法..

编辑2:

尝试使用此解决方案......可能对您有帮助..

 -(void)handleTap:(UITapGestureRecognizer *)sender

   {

CGPoint location = [sender locationInView:self.view];

    if (CGRectContainsPoint([self.view convertRect:self.yourTableView.frame fromView:self.tableView.superview], location))
    {
        CGPoint locationInTableview = [self.yourTableView convertPoint:location fromView:self.view];
        NSIndexPath *indexPath = [self.yourTableView indexPathForRowAtPoint:locationInTableview];
        if (indexPath)
            [self tableView:self.yourTableView didSelectRowAtIndexPath:indexPath];

        return;
    }

}