我已經創建了一個視圖控制器。 安裝一個包含文本標籤的一堆自定義單元格的tableview。當鍵盤出現時,tableview的框架不會自動調整大小。在界面生成器中是否有複選框,我錯過了什麼?uitableview不用鍵盤調整大小
我應該檢查什麼設置?您的視圖控制器上
我已經創建了一個視圖控制器。 安裝一個包含文本標籤的一堆自定義單元格的tableview。當鍵盤出現時,tableview的框架不會自動調整大小。在界面生成器中是否有複選框,我錯過了什麼?uitableview不用鍵盤調整大小
我應該檢查什麼設置?您的視圖控制器上
如果您正在使用UIViewController
,您必須在出現鍵盤時編寫調整大小的代碼。您可以處理UIKeyboardWillShowNotification, UIKeyboardDidShowNotification, UIKeyboardWillHideNotification, UIKeyboardDidHideNotification
以適當調整tableview的大小。
我用了一個UITableViewController,它現在工作正常... – Hackmodford
添加下面的鍵盤通知事件:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHide:) name:UIKeyboardDidHideNotification object:nil];
和調整您的tableView的幀按鍵盤通知:
- (void)keyboardDidShow:(NSNotification *)notification
{
NSDictionary *userInfo = [notification userInfo];
CGSize size = [[userInfo objectForKey: UIKeyboardFrameEndUserInfoKey] CGRectValue].size;
CGRect frame = CGRectMake(self.tableView.frame.origin.x,
self.tableView.frame.origin.y,
self.tableView.frame.size.width,
self.tableView.frame.size.height - size.height);
self.tableView.frame = frame;
}
- (void)keyboardWillHide:(NSNotification *)notification
{
NSDictionary *userInfo = [notification userInfo];
CGSize size = [[userInfo objectForKey: UIKeyboardFrameEndUserInfoKey] CGRectValue].size;
self.tableView.frame = CGRectMake(self.tableView.frame.origin.x,
self.tableView.frame.origin.y,
self.tableView.frame.size.width,
self.tableView.frame.size.height + size.height);
}
如果要向上滾動TAPP單元格,執行在textFieldDidBeginEditing:
方法如下更改:
- (void) textFieldDidBeginEditing:(UITextField *)textField {
UITableViewCell *cell = (UITableViewCell*) [[textField superview] superview];
[self.tableView scrollToRowAtIndexPath:[tView indexPathForCell:cell] atScrollPosition:UITableViewScrollPositionTop animated:YES];
}
@ matt的答案是正確的。出現鍵盤時,不應該更改tableView的框架。 –
這段代碼對我來說不太合適。首先,「keyboardWillHide」功能仍將我的屏幕鍵盤視爲352像素高,而不是0.其次,在Landscape iPad應用程序中,鍵盤的「高度」實際上存儲在「size.width」中,而不是「size.height」的價值。 –
通知方法應該是:[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide :) name:UIKeyboardWillHideNotification object:nil]; –
它是UIViewController還是UITableViewController?正如你所知的UITableViewController的tableView不會調整大小 – Atif
即使你使用的是UIViewController,你也必須在出現鍵盤時寫入調整大小的代碼。 – Atif
如果是這樣,我會很快看到會發生什麼。你是對的。我正在使用UIViewController。 – Hackmodford