操作方法:当UITextView不在视图时隐藏键盘?

时间:2011-04-15 00:04:31

标签: cocoa-touch ios uitableview keyboard uitextview

我在UITableView(Controller)中放置了一些带有自定义单元格的UITextViews,我遇到了一个问题。用户可以在导航栏中点击“编辑”按钮将表格设置为编辑模式 - 每个自定义单元格都有自己的方式启用其各个UITextViews进行文本输入。这很好。

我遇到的问题是,如果焦点位于文本视图上,当用户点击“完成”时,该视图会滚动到视图之外,键盘将保留,文本视图将保持编辑模式。如果文本视图在视图中,则不会发生这种情况。更具体地说 - 我正在看的单元格位于屏幕的顶部,如果它在iPhone屏幕上方滚动,它将表现得很有趣。当表格底部的textview被滚动出来时,我似乎没有同样的问题。

我已经完成了我能想到的每一个排列,以便让第一响应者辞职,但在我看来,隐藏的textview不会获取/发送任何消息(甚至任何委托方法),直到它重新回到屏幕或其他一些文本视图获得焦点。

我错过了什么?

1 个答案:

答案 0 :(得分:1)

在这一天的大部分工作中,这是我学到的:

  1. 您实际上无法访问 UITableView中的视图外单元格。一世 但是,猜测是有道理的 在我的情况下令人沮丧
  2. 没有重绘或尝试的数量 手动辞职第一响应者是 即使你指出,也会去帮忙 到特定的特定单元格 行。
  3. setEditing:animated :(当你点击“完成”按钮时调用)不是唯一发生的事情
  4. 我猜测UITextView保持编辑模式的原因是因为单元格的缓存版本处于编辑模式,并且这些不同的表方法不会调用缓存的单元格/数据(例如setEditing:animated: )
  5. 这是我找到的解决方案:( UISearchBar and resignFirstResponder):
    *调用[self.tableView endEditing:YES]会导致所有视图都退出第一响应者,这意味着我的UITextView不再被选中。我不确定它为什么会这样工作,但是出现setEditing:被发送到每个单元格&相应地重新绘制。