2012-07-07 129 views
7

我有一個textField被設置爲改變tableView的數據源與輸入(並調用reloadData)的每個字母。UITableView reloadData導致UITextField resignFirstResponder

但由於某些原因,每次輸入字母時,鍵盤被駁回。

任何人都知道爲什麼?

+1

發佈開始編輯您的文本字段和任何其他相關方法的方法的代碼,我們不能幫助你,如果我們不能看到問題是什麼。的 – 8vius 2012-07-07 05:41:18

+1

可能重複[UITableView的reloadData辭職第一響應(http://stackoverflow.com/questions/6409370/uitableview-reloaddata-resigns-first-responder) – CodaFi 2012-07-07 05:43:41

+0

@CodaFi你釘它。 textField位於表格頂部的自定義單元格中,因此當我重新裝入數據時,它也會重新加載該單元格,從而使其內部的任何內容都被取消。謝謝!!! – 2012-07-07 16:31:03

回答

10

你的文本字段辭職,因爲重載單元發送-resignFirstResponder消息,由於他們的生存是不是一個重裝後保證。有關更多信息,請參閱此related問題。

+0

一個很好的解決方法是增加一個隱藏的文本框的視圖,切換重裝表時重點轉移到該文本框。重新加載表格後,您可以將焦點切換回原始文本字段,以保持該鍵盤處於打開狀態。 [self.fakeTextField becomeFirstResponder]; [self.tableView reloadData]; [self.textField performSelector:@selector(becomeFirstResponder)withObject:nil afterDelay:.01]; – hobosf 2015-06-12 19:27:19

-3

使用此方法textFieldShouldReturn:並在yourClass.h文件中添加UITextFieldDelegate委託。將代表設置爲yourTextfield並在viewDidLoad方法中寫下以下代碼。

yourTextfield.delegate = self;

,並實現textFieldShouldReturn:如下的

- (BOOL)textFieldShouldReturn:(UITextField *)theTextField { 

     [theTextField resignFirstResponder]; 

    return YES; 
} 

我認爲這將是對你有所幫助。