2013-04-06 6 views
7

세 개의 텍스트 필드가 있는데 커서를 다음 텍스트 필드로 옮기고 싶습니다. 마지막에 도달하면 키보드가 닫힙니다. 그러나 아무것도 나를 위해 작동하지 않습니다 ... 여기에 내가 가진 것의 예가 있습니다. 그러나 아무 것도 움직이지 않으며 다음 버튼을 선택할 때 아무런 변화가 없습니다.UITextField 커서를 다음 텍스트 필드로 이동하는 방법

- (BOOL)textFieldShouldReturn:(UITextField *)textField { 
    if (textField == field1TextField) { 
     [textField resignFirstResponder]; 
     [field2TextField becomeFirstResponder]; 
    } 
    else if (textField == field2TextField) { 
     [textField resignFirstResponder]; 
     [field3TextField becomeFirstResponder]; 
    } 
    else if (textField == field3TextField) { 
     [textField resignFirstResponder]; 
    } 
    return YES; 
} 
+3

텍스트 필드 대리자가 올바르게 설정 되었습니까? 이 메소드가 전혀 호출되지 않습니까? – stevex

+0

이 메소드가 호출됩니까? 만약 그렇다면 textField == field1TextField 블록이 호출되고 .. field2TextField는 nil이 아닙니다 .. 그러면 작동하는 것처럼 보입니다 – stevex

+0

질문으로 귀하의 의견을 올려주세요! 나는 그것을 잊었다! 나는 그것을 체크 할 것이다! –

답변

3

이 메서드가 바인딩 된 개체는 텍스트 필드의 대리자로 설정해야합니다. 메서드에 중단 점을 설정하여이 메서드가 호출 될 때 호출되는지 확인합니다.

nib 또는 스토리 보드를 사용하는 경우 field... 인스턴스 변수는 올바르게 연결되는 콘센트 여야합니다. 프로그래밍 방식으로 생성 된 경우 해당 객체에 할당 된 객체가 있는지 확인해야합니다. 메소드 내부에있을 때 이러한 변수의 값을 검사하여이를 검증하십시오.

becomeFirstResponder을 다른 컨트롤에 호출하기 전에 다른 컨트롤에 resignFirstResponder을 호출 할 필요가 없습니다.

+0

답변 해 주셔서 감사합니다. –

관련 문제