나는 너희들이 이미 그 모든 것을 읽는 해결책을 얻었기를 바랍니다. 그러나 다음과 같이 내 솔루션을 찾았습니다. 와 (과) 셀이 이미있을 것으로 예상합니다 UITextField
. 따라서 준비하는 동안 행 색인을 텍스트 필드의 태그에 유지하십시오.
cell.textField.tag = IndexPath.row;
아래와 같이 전역 범위를 가진의 activeTextField
인스턴스를 만듭니다 UITextField
.
@interface EditViewController (){
UITextField *activeTextField;
}
자 이제 마지막 코드를 복사하여 붙여 넣습니다. 또한 추가하는 것을 잊지 마십시오UITextFieldDelegate
#pragma mark - TextField Delegation
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
activeTextField = textField;
return YES;
}
- (void)textFieldDidEndEditing:(UITextField *)textField{
activeTextField = nil;
}
키보드 등록 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];
}
키보드 처리 Notifications
:
UIKeyboardDidShowNotification
이 전송 될 때 호출됩니다 .
- (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];
}
UIKeyboardWillHideNotification
이 전송 될 때 호출
- (void)keyboardWillBeHidden:(NSNotification*)aNotification
{
UIEdgeInsets contentInsets = UIEdgeInsetsZero;
[self.tableView setContentInset:contentInsets];
[self.tableView setScrollIndicatorInsets:contentInsets];
}
이제 한 가지 남았습니다. registerForKeyboardNotifications
메소드를 ViewDidLoad
메소드에 다음과 같이 호출하십시오 .
- (void)viewDidLoad {
[super viewDidLoad];
// Registering keyboard notification
[self registerForKeyboardNotifications];
// Your codes here...
}
당신은 textFields
더 이상 키보드에 의해 당신의 의지가 숨겨지지 않기를 바랍니다 .