1

在我的代码中,我在 a中有大约 8UITextFieldUITableView,每一个都是连续的。我也有一个UIBarButtonItem选择时调用方法hideKeyboard

当用户选择一个文本字段,然后滚动表格视图以使文本字段不再可见但键盘保持显示,然后点击 uibarbuttonitem 我得到一个 EXC_BAD_ACCESS。

文本字段以编程方式放置在每一行中,通过cellForRowAtIndexPath. hideKeyboard简直就是[self.view endEditing:YES];

所以我的猜测是,由于endEditing搜索作为第一响应者的 textField 并在其上调用 resign 但是当它成为第一响应者并且我以未显示的方式滚动 tableview 时,该单元格必须已被重用并且文本字段必须已被释放..但 endEditing 方法仍会调用它来辞职……那是可能发生崩溃的时候。

我想过获得最后一个 firstResponder 的引用,但如果它被释放,我无论如何都无法辞职..我也不能调用 becomeFirstResponder 然后在随机文本字段中辞职,因为我不知道哪些是可见的时间。

有谁知道这次崩溃的原因是什么?我将如何正确关闭键盘?

4

1 回答 1

2

如果用户将活动文本字段滚动到视野之外,也许您可​​以决定放弃第一响应者的身份。您可以在 tableViewDelegate 协议方法中执行此操作:

– tableView:didEndDisplayingCell:forRowAtIndexPath:

于 2014-02-18T21:49:23.067 回答