1. 程式人生 > >iOS開發tableView的cell裡面有textField,鍵盤出現的時候,自動上移

iOS開發tableView的cell裡面有textField,鍵盤出現的時候,自動上移

首先在ios4以後,當UITableViewCell裡有UITextfield,當輸入時鍵盤遮蓋了UITextField,UITableView是會自動上移,當如果要讓tableView自動滾動的話,還需要設定一下tableView的contentInset。接下來介紹一下實現步驟,
首先監聽鍵盤出現和消失:

//監聽鍵盤出現和消失
    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil
]; [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];

收到通知在方法裡面實現:

#pragma mark 鍵盤出現
-(void)keyboardWillShow:(NSNotification *)note
{
    CGRect keyBoardRect=[note.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];
    self
.tableView.contentInset = UIEdgeInsetsMake(0, 0, keyBoardRect.size.height, 0); } #pragma mark 鍵盤消失 -(void)keyboardWillHide:(NSNotification *)note { self.tableView.contentInset = UIEdgeInsetsZero; }

這樣就可以實現自動滾動了,另一種方法是鍵盤出現的時候把tableView的frame的高度減去鍵盤的高度,也可以實現,例如:

#pragma mark 鍵盤出現
-(void)keyboardWillShow:(NSNotification *)note
{
    CGRect keyBoardRect=[note.userInfo
[UIKeyboardFrameEndUserInfoKey] CGRectValue]; self.tableView.frame = CGRectMake(0, 64, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height - 64 - keyBoardRect.size.height); } #pragma mark 鍵盤消失 -(void)keyboardWillHide:(NSNotification *)note { self.tableView.frame = CGRectMake(0, 64, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height - 64); }