1

在我的代码中,我在UITableView中有大约8个UITextField,每个都在一行中。我还有一个UIBarButtonItem,选中时调用方法hideKeyboard在表格视图中使用endEditing和textfields时崩溃

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

通过cellForRowAtIndexPath以编程方式将文本字段放置在每一行中。 hideKeyboard只不过是[self.view endEditing:YES];

所以我的猜测是,因为endEditing搜索的第一个响应者的textField并呼吁辞职,但当它成为第一响应者,我滚动tableview的方式,它没有显示,该单元格必须被重用,并且文本字段必须已被释放..但是endEditing方法仍然会调用它来辞职......当碰撞可能发生时。

我想过要得到最后一个firstResponder的引用,但是如果它被释放了,我无法反驳它..我不能也调用becomeFirstResponder然后辞职在一个随机文本字段中,因为我不知道哪个在那个时候是可见的。

有没有人知道这次事故的原因是什么?我将如何正确解雇键盘?

回答

2

如果用户将活动文本字段滚动到视图外,也许您可​​以决定退出第一响应者状态。你可以做的是,在tableViewDelegate协议方法:

- 的tableView:didEndDisplayingCell:forRowAtIndexPath:

相关问题