(我知道我可以使用单击手势识别器代替didSelectRowAtIndexPath的内置行为,但是问题在于:当我添加单击手势识别器时,单元格还有一个按钮无法按下。此外,我在SO上看到过用户将双击功能构建到didSelectRowAtIndexPath中的示例,但那不是有点太麻烦了吗?)
关于Kris'回答的更多信息:
在我的情况下,我向自定义UITableViewCell
中的一个UIImageView
添加了两个轻拍手势时出现问题。当您在UIImageView
上单击/双击时,将调用didSelectRowAtIndexPath:
。当我只有一个轻拍手势时,didSelectRowAtIndexPath:
不会被调用(对我来说,这是正确的行为)。
为了防止使用两个轻拍手势(单击/双击)时调用didSelectRowAtIndexPath:
,我将以下代码添加到第一个轻拍手势(单击手势)中:
tapGesture.cancelsTouchesInView = YES;
tapGesture.delaysTouchesBegan = YES;
更改后,在自定义单元格上方的UIImageView
上轻敲/双击不会触发didSelectRowAtIndexPath:
看起来我可以使用手势识别器的delaysTouchesBegan和cancelsTouchesInView属性,让didSelectRowAtIndexPath和双击手势识别器很好地结合起来。
@MSgambel描述的另一种选择似乎同样有效。
即使单元格中有按钮,您也可以使用单击手势识别器代替didSelectRowAtIndexPath
。您只需要检查触摸位置是否在UIButton
的视图内,以处理两种情况。希望这能帮到您!
didSelectRowAtIndexPath
е…·жңүдјҳе…Ҳзә§й«ҳдәҺжүӢеҠҝиҜҶеҲ«еҷЁзҡ„и§Ұж‘ёдәӢ件жӢҰжҲӘеҠҹиғҪпјҢиҖҢдё”з”ұдәҺжӮЁеҫҲеҸҜиғҪе·Із»Ҹе®һзҺ°дәҶе®ғпјҢжүӢеҠҝиҜҶеҲ«еҷЁе°Ҷж°ёиҝңдёҚдјҡиў«и°ғз”ЁгҖӮ - msgambel我使用"delayTouchesBegan"方法测试了双击,但发现单击由表格接收后会被延迟,在用户与表格的交互中响应变差,甚至有些烦人。
我的解决方案有些平凡,但我在didSelectRowAtIndexPath方法中使用定时器来检测点击。我记录第一次点击的点击计数为“1”,如果用户在0.2秒内没有再次点击,则显示所选项目。如果用户在0.2秒内进行第二次点击,则显示另一个项目(动作表)。每次都重置点击计数。
这种方法使用了更多的代码,但可以快速响应界面上的操作,而且用户无需知道幕后发生了什么——只需要知道UI是响应的即可。
cancelsTouchesInView
和delaysTouchesBegan
,我仍然无法调用双击处理程序。 - Anupdas