Tôi hy vọng các bạn đã có một giải pháp đọc tất cả những người. Nhưng tôi tìm thấy giải pháp của mình như sau. Tôi hy vọng rằng bạn đã có một tế bào với UITextField. Vì vậy, khi chuẩn bị chỉ cần giữ chỉ mục hàng vào thẻ của trường văn bản.
cell.textField.tag = IndexPath.row;
Tạo một activeTextFieldví dụ UITextFieldvới phạm vi toàn cầu như dưới đây:
@interface EditViewController (){
UITextField *activeTextField;
}
Vì vậy, bây giờ bạn chỉ cần sao chép dán mã của tôi vào cuối. Và cũng đừng quên thêmUITextFieldDelegate
#pragma mark - TextField Delegation
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
activeTextField = textField;
return YES;
}
- (void)textFieldDidEndEditing:(UITextField *)textField{
activeTextField = nil;
}
Bàn phím đăng ký notifications
#pragma mark - Keyboard Activity
- (void)registerForKeyboardNotifications
{
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWasShown:)
name:UIKeyboardDidShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillBeHidden:)
name:UIKeyboardWillHideNotification object:nil];
}
Bàn phím tay cầm Notifications:
Được gọi khi UIKeyboardDidShowNotificationđược gửi.
- (void)keyboardWasShown:(NSNotification*)aNotification
{
NSDictionary* info = [aNotification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.height, 0.0);
[self.tableView setContentInset:contentInsets];
[self.tableView setScrollIndicatorInsets:contentInsets];
NSIndexPath *currentRowIndex = [NSIndexPath indexPathForRow:activeTextField.tag inSection:0];
[self.tableView scrollToRowAtIndexPath:currentRowIndex atScrollPosition:UITableViewScrollPositionTop animated:YES];
}
Được gọi khi UIKeyboardWillHideNotificationđược gửi
- (void)keyboardWillBeHidden:(NSNotification*)aNotification
{
UIEdgeInsets contentInsets = UIEdgeInsetsZero;
[self.tableView setContentInset:contentInsets];
[self.tableView setScrollIndicatorInsets:contentInsets];
}
Bây giờ một điều còn lại, Gọi registerForKeyboardNotificationsphương thức vào ViewDidLoadphương thức như sau:
- (void)viewDidLoad {
[super viewDidLoad];
// Registering keyboard notification
[self registerForKeyboardNotifications];
// Your codes here...
}
Bạn đã hoàn thành, hy vọng ý chí của bạn textFieldskhông còn bị ẩn bởi bàn phím.