iOS開發tableView的cell裡面有textField,鍵盤出現的時候,自動上移
阿新 • • 發佈:2019-02-07
首先在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);
}