2011-11-09 61 views
0

我有一個UITableView與幾個UITableViewCell s。每個單元格包含一個UITextfield。點擊textFields會導致鍵盤顯示。不幸的是,鍵盤覆蓋了iPhone屏幕上較低的一些單元。最簡單的方法來調整UITableView顯示隱藏UIKeyboard

當鍵盤顯示時向上滾動tableView最簡單的方法是什麼?

我試驗了contentOffset。這適用於實際滾動tableView。然而,我很難確定哪個單元格是「活動的」(有一個textField,它是當前的第一個響應器)。我的應用程序支持縱向和橫向,所以有時需要在設備旋轉時滾動tableView。

+0

您不能使用cellForRowAtIndexPath方法來確定您需要哪個單元格以及哪些單元格可以從文本字段中移除? – Mellson

回答

2

一個簡單的方法來跟蹤它的文本框是當前活動的設置其tag屬性爲indexPath的行上cellForRowAtIndexPath:

另一種方法是使用下面這行:

NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:[textField convertPoint:textField.frame.origin toView:self.tableView]]; 

textFieldShouldBeginEditing:爲當textField變爲活動狀態時,或者在設備旋轉時的旋轉回調,然後滾動tableView使用scrollToRowAtIndexPath:atScrollPosition:animated:

1

我正在編寫一個應用程序一個類似的問題。我處理跟蹤第一響應者或活動UITextField的方式是使用回調。我打電話使用UIControlEvent UIControlEventEditingDidBegin

我在哪裏設置的的UITextField:

[self.nameUnitNumberField addTarget:self.textFieldDelegate action:@selector(handleEditingDidBegin:) forControlEvents:UIControlEventEditingDidBegin]; 

然後在委託類,我設置當前文本字段:

- (void)handleEditingDidBegin:(id)sender 
{ 
    self.currentNameField = (UITextField *)sender; 
} 

這似乎運作良好。它也避免了使用標籤。我聽說它有潛在的問題,最好在不需要時避免它。

一旦你有了積極的UITextField,您可以使用該contentInset和scrollToRowAtIndex:如下所述:Get UITableView to scroll to the selected UITextField and Avoid Being Hidden by Keyboard

或只是調整表視圖,而鍵盤在屏幕上。這將是最簡單的方法。

相關問題