我有一个带有UITableViewCells的UITableView,其中包含标签,其中包含将文本插入UITextView的建议。我希望当用户点击一些带有文本建议的uitableviewcell时,此文本将进入uitextview,但我也希望用户能够自己编辑uitextview。
所有工作正常,直到我想在开始编辑textview后添加点击背景的功能,这导致隐藏键盘(resignFirstResponder)。但是当我实现backgroundTap时,对didSelectRowAtIndexPath的调用就不再发生了。
如何解决这个问题,以便当用户点击某个uitableviewcell时,调用将是didSelectRowAtIndexPath而不是backgroundTap?
我的backgroundTap实现是:
-(void)backgroundTap:(UITapGestureRecognizer *)tapGR{
//...some code here...
}
在viewWillAppear中我添加了一行:
[self.view addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(backgroundTap:)]];
感谢。
答案 0 :(得分:1)
问题在于轻敲手势识别器吃掉了用于桌面视图的水龙头。请参阅didSelectRowAtIndexPath: not being called。
手势识别器不仅适用于它所附着的视图(在您的情况下为self.view
),而且还适用于视图层次结构中所有视图的子视图。在这种情况下,它包括所有内容,包括表格视图单元格。
解决方案是使用手势识别器委托(iOS 5)或UIView gestureRecognizerShouldBegin:
(仅限iOS 6)进行调解。