2013-05-19 42 views
0

我有UITextField裏面的第一個單元格的UITableView,每當它改變表格也在改變。問題是當表更新時,該字段失去第一響應者狀態,並且becomeFirstResponder不再使其成爲第一響應者 - 鍵盤消失。UITextField becomeFirstResponder不工作在動態單元格內

我在tableView:didEndDisplayingCell:forRowAtIndexPath中調用[_searchField becomeFirstResponder]:但鍵盤仍然消失。更新:我曾嘗試在cellForRowAtIndexPath中調用becomeFirstResponder,但它不起作用。 _searchField是連接到該字段的單元類的出口屬性。

我應該在哪裏撥打becomeFirstResponder以便該字段成爲第一響應者?或者,也許我應該以不同的方式做到這一點,使領域不會失去第一響應者的地位?我嘗試刷新不是整個表,但單獨的部分(搜索字段在它自己的部分),但它沒有工作,控制器試圖顯示不再存在的單元格,所以我寧願刷新整個表。

我知道,我可以使用特殊的搜索器,但我不喜歡它的設計,讓我實現了它這樣...

謝謝!

+1

一次嘗試 - 創建出口標籤,並設置爲在的cellForRowAtIndexPath的第一個響應者,如果你是重新加載單元格。 – ila

+0

我有這個領域的出路,我也嘗試過讓它成爲這個方法中的第一個響應者,但它沒有工作,我認爲是因爲它太早了,我想在顯示單元格時調用了didEndDisplayingCell,但它沒有't help ... – esp

+1

還有其他輸入字段嗎?我的理解是,鍵盤不應該出現,直到你點擊輸入字段。 –

回答

7

實際上,我應該簡單地在同一個方法中調用becomeFirstResponder AFTER [self.tableView reloadData],而不是試圖找到在UITableViewCell子類或UITableViewController類中的表刷新後調用的某些方法。

我沒有這樣做,可能是因爲我沒有在調用[self.tableView reloadData]的地方引用單元格。

這是什麼工作(SOPSearchCell是的UITableViewCell的子類,自我是的UITableViewController子類的實例):

[self.tableView reloadData] 
// make searchField first responder again 
NSUInteger indexes[] = {0, 0}; 
NSIndexPath *indexPath = [NSIndexPath indexPathWithIndexes:indexes length:2]; 
SOPSearchCell *cell = (SOPSearchCell *)[self.tableView cellForRowAtIndexPath: indexPath]; 
[cell.searchField becomeFirstResponder]; 
+3

不要忘記你可以做'[NSIndexPath indexPathForRow:0 inSection:0];'稍微更易讀的代碼。 –

+0

非常感謝,我正在尋找這樣的東西:) – esp

+0

爲我工作! –

相關問題