2010-07-18 2 views
0

6 개의 UITextField가있는보기 용보기 컨트롤러가 있습니다. 사용자가 텍스트 필드를 선택할 때마다 물건을 위쪽으로 스크롤해야합니다. 그래서 텍스트 필드는 모두 각각의 델리게이트로 뷰 컨트롤러를 설정합니다. 위임 메서드가 실행되면 스크롤 메서드를 호출하여 스크롤하면 (키보드가 나타나는 경우) 또는 아래로 스크롤됩니다 (사라지는 경우). 스크롤 방법은 다음과 같습니다 : 사용자가 텍스트 필드를 선택하고 값을 입력텍스트 필드 사이를 전환 할 때 스크롤하지 않기

- (void) scroll: (CGFloat) distanceUp { 
    [UIView beginAnimations:@"Scroll" context:NULL]; 
     //move some stuff up by distanceUp, or down if distanceUp is negative. 
    [UIView commitAnimations]; 
} 

경우, 키보드의 완료 버튼을 명중,이 잘 작동합니다.

사용자가 한 텍스트 필드에서 다른 텍스트 필드로 직접 전환 할 때 문제가 발생합니다. 이 경우 뷰가 아래로 점프 한 다음 다시 스크롤됩니다. 분명히 나는 ​​그것이 단지 자리에 남아있는 것을 선호 할 것이다. 어떻게해야합니까?

+0

시뮬레이터에서만 문제가있는 것 같습니다 (이전에이 문제를 만났습니다), 기기에서 테스트 했습니까? – vodkhang

+0

scrollView 사용을 고려 해본 적이 있습니까? 스크롤이 필요한 모든 것에 대한 parentView로서? textFields 대리자 대신 UIKeyboard-Notificatins를 사용하여 스크롤이 필요한시기를 결정할 수 있습니다. – tonklon

답변

1

의견 작성자 tonclon이 제안한 것처럼, 내가 한 일은 텍스트 필드 대리자 대신 UIKeyboard 알림을 사용하는 것입니다.

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow) name:UIKeyboardWillShowNotification object:nil]; 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide) name:UIKeyboardWillHideNotification object:nil]; 

keyboardWillShow/숨기기 방법은 위/아래로 스크롤 전화 : viewDidLoad에, 나는 다음과 같은 있습니다.

viewDidUnload와 dealloc에서 모두 등록 취소합니다. [이 두 등록 취소가 모두 필요한지 확실하지 않습니다.]

관련 문제