我在UITapGestureRecognizer
内使用了一些UITableViewCell
的UILabel。 GestureRecognizer效果很好。但是当我点击标签时,我希望didSelectRowAtIndexPath:
也应该执行。或者甚至只是indexPathForSelectedRow()
方法应该给我选定的行。
设置cancelsTouchesInView = false
无效!
这可能吗?现在indexPathForSelectedRow()
方法返回nil。
谢谢
答案 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;
}
}