将 UITextView 作为第一响应者后,表格视图单元格不可选择
Posted
技术标签:
【中文标题】将 UITextView 作为第一响应者后,表格视图单元格不可选择【英文标题】:Table View Cells Not Selectable After Resigning UITextView as First Responder 【发布时间】:2017-12-07 00:10:27 【问题描述】:我在 UITableViewCell 中有一个 UITextView。我已将其设置为在选择单元格时成为第一响应者:
TPNTableViewCell *thisCell = (TPNTableViewCell *)[tblMain cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
thisCell.txtHidden.text=@"";
[thisCell.txtHidden becomeFirstResponder];
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(goAwayKeyboard)];
[self.view addGestureRecognizer:tap];
所以当单元格被选中时,txtHidden 成为第一响应者。然后当您单击键盘外时会触发选择器 goAwayKeyboard。
-(void)goAwayKeyboard
TPNTableViewCell *thisCell = (TPNTableViewCell *)[tblMain cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
[thisCell.txtHidden resignFirstResponder];
这可行,但是在键盘退出后,我无法再选择表格视图中的单元格。我可以滚动表格视图,但无法选择单元格,我不知道为什么。
【问题讨论】:
【参考方案1】:点击手势识别器在添加到视图后可能会吞噬所有触摸事件。也许在-goAwayKeyboard
中删除它会恢复触摸交互。
【讨论】:
所以我尝试将属性添加到视图控制器@property UIGestureRecognizer *tap,然后在goAwayKeyboard中我做了[self.view removeGestureRecognizer:tap]; .但这也没有用。我还尝试将表格视图设置为第一响应者,但没有奏效。奇怪的是表格视图仍然拖动它只是不响应点击。 没关系。我不小心调用了两次添加手势识别器的函数。傻我。谢谢!【参考方案2】:您应该禁用离开键盘中的点击手势,您可以在以下代码的帮助下做到这一点,
tap.enabled = NO;
【讨论】:
以上是关于将 UITextView 作为第一响应者后,表格视图单元格不可选择的主要内容,如果未能解决你的问题,请参考以下文章
自定义 inputaccessoryView 中的 UITextView 不退出第一响应者状态
将 UITextView 放在 UITableView 页脚中