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:

相關問題