키보드가 나타나면 키보드가 텍스트 필드를 차단하지 못하도록 다음 방법을 사용하여보기를 위로 이동합니다. 기본적으로 스크롤바에 텍스트 필드를 포함하고 키보드가 나타날 때 스크롤을 위쪽으로 스크롤합니다. 텍스트 필드이 화면 상단에 이미 그것은 점프 할 필요가없는 경우IOS : 키보드가 나타나면 TextField 위로 이동
// Called when the UIKeyboardDidShowNotification is sent.
- (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);
_scrollView.contentInset = contentInsets;
_scrollView.scrollIndicatorInsets = contentInsets;
// If active text field is hidden by keyboard, scroll it so it's visible
// Your app might not need or want this behavior.
CGRect aRect = self.view.frame;
aRect.size.height -= kbSize.height;
if (!CGRectContainsPoint(aRect, _activeField.frame.origin)) {
[_scrollView scrollRectToVisible:_activeField.frame animated:YES];
}
}
그러나, 위의 코드는보기에서 올라 점프를 발생합니다.
어딘가에 나는 그것을 막기 위해 추가 할 수있는 선이 있지만 기억이 나지 않습니다. 기본적으로, 텍스트 필드가 이미 키보드가 그것을 커버하지 않을 정도로 높으면 뷰를 이동시킬 필요가 없다는 것을 테스트 할 것입니다.
위 코드의 if 문은 텍스트 필드가 숨겨져 있지 않은 경우를 선별하지 않는 것으로 보입니다.
누구든지이 방법을 제안 할 수 있습니까?
감사합니다.
, 그것은 훨씬 쉬울 것 같습니다 정상적인보기, 당신은 단지 바닥 제약을 조정할 수 다음 layoutIfNeeded 호출, 하위보기는보기 밖으로 뛰지 않을 것입니다 – Tj3n
당신은이 일을 automanages IQkeyboard 라이브러리를 사용할 수 있습니다. 라이브러리를 프로젝트에 넣으면 아무것도 구현하지 않아도됩니다. 자동으로 작업을 시작합니다. –