2

私はRubyMotionを使用しています(以前はXcodeでObj Cを作成していましたが、現在はRubyのbkgdのためにRubyMotionを使用したい人と協力しています)

2つのテキストフィールドを持つViewControllerがあります。textfield1の条件が満たされない場合にユーザーがtextfield1からtextfield2に切り替えるたびに、エラーラベルが表示されるようにする必要があります(これにはself.ErrorLabel.showを使用します)。条件ステートメントの書き方は知っていますが、ユーザーが次のテキストフィールドにいつ切り替えるかを知る方法は本当にわかりません。

私は使用できると思いました:

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

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

end

この質問からUITextFieldLostFocusを検出しますが、そのような運はありません。私はRubyMotionを使用していることを知っているので、いくつかの違いがあります。

これを機能させるにはどうすればよいですか?開発者がいつも使っているようなもののようですが、結果が見つからないため、適切なキーワードで検索しているとは思いません。

利用可能な助けをありがとう。

更新:私はこの方法を使用すると考えています:

- (void)textFieldDidEndEditing:(UITextField *)textField

RubyMotionの場合:def textFieldDidEndEditing(textField)

log()を使用して、ユーザーが1つのテキストフィールドから次のテキストフィールドに変更されたことを実際に通知することを確認しました。残されたテキストフィールドを指定できるように、いくつかの調整を行う必要があります。

4

1 に答える 1

4

delegate各テキストフィールドのをViewControllerクラスに設定してから、メソッドを実装する必要があります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
于 2012-06-06T23:39:37.517 に答える