2012-06-06 1 views
2

전화 방법 나는 RubyMotion (이전 엑스 코드에서의 Obj C를 쓰고했지만 지금은 루비에 BKGD하기 때문에 RubyMotion를 사용하고자하는 사람과 협력하고 있습니다)를 사용하고

나는이 텍스트 필드와의 ViewController 있습니다. 나는 텍스트 필드 1에있는에서 사용자의 스위치는 텍스트 필드 1의 조건이 충족되지 않은 경우, 오류 레이블 쇼 (나는 이것에 대한 self.ErrorLabel.show 사용) 텍스트 필드 2 할 때마다 있도록이 필요합니다. 내 조건문을 작성하는 방법을 알고 있지만 실제로 사용자가 다음 텍스트 필드로 전환하는 방법을 알지 못합니다.

if ([textField1 isFirstResponder] && (textField1 != touch.view)) 
    log('left textfield1') 
end 

if ([textField2 isFirstResponder] && (textField2 != touch.view)) 
    log('left textfield2') 

end 

을이 질문에 Detect UITextField Lost Focus하지만 그런 행운에서 :

은 내가 사용할 수 있다고 생각. RubyMotion을 사용하고 있다는 점을 알고 있으므로 약간의 차이점이 있습니다.

어떻게 작동합니까? 개발자가 항상 사용하는 것처럼 보이기 때문에 올바른 키워드로 검색하고 있다고 생각하지 않습니다. 결과가 없습니다.

사용할 수있는 도움을 주셔서 감사합니다.

업데이트 :

RubyMotion에서
- (void)textFieldDidEndEditing:(UITextField *)textField 

: 데프 textFieldDidEndEditing (에 textField)

나는 이것이 참으로 알려 않음을 결정하기 위해 로그()를 사용 내가 생각하고 나는이 방법을 사용하는 것 사용자가 한 텍스트 필드에서 다음 텍스트 필드로 변경되었음을 나타냅니다. 텍스트 필드가 남았는지 지정할 수 있도록 몇 가지 조정할 필요가 있습니다.

답변

4

각 텍스트 필드의 delegate을보기 컨트롤러 클래스로 설정 한 다음 textFieldDidEndEditing 메서드를 구현해야합니다. 여기에 작업 예제 :

class MyViewController < UIViewController 
    attr_accessor :textField1, :textField2 

    def viewDidLoad 

    @textField1 = UITextField.alloc.initWithFrame([[10, 100], [300, 40]]) 
    # Customize your text field... 
    @textField2 = UITextField.alloc.initWithFrame([[10, 150], [300, 40]]) 
    # Customize your text field... 
    view.addSubview(@textField1) 
    view.addSubview(@textField2) 

    @textField1.delegate = self 
    @textField2.delegate = self 
    end 

    def textFieldDidEndEditing(textField) 
    if textField == @textField1 
     puts 'left textField1' 
    elsif textField == @textField2 
     puts 'left textField2' 
    end 
    end 
end 
+0

간염; 운동에 들어가기. 나는'self.textField1 = UITextField.alloc.etc ... '로 델리게이트를 설정하는 것과 어떤 차이가 있는지 이해하려고 노력하고있다.''@textField1.delegate = self'로했던 것처럼 나중에 설정하고 싶다. (이 초기 '즉시'접근 방식은 작동하지 않지만 당신 방식은 ...이 두 방식이 어떻게 다른지 이해하고 싶습니다.) – Ben

관련 문제