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 activeTextField
ví dụ UITextField
vớ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 registerForKeyboardNotifications
phương thức vào ViewDidLoad
phươ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 textFields
không còn bị ẩn bởi bàn phím.