0

私の RubyMotion コントローラーには、3 つのテキストフィールドがあります。最後の 1 つは、タップされると、デリゲートで didTapSomeField メソッドを実行し、別のコントローラーをプッシュします。この textField は、他の 2 つのように編集できません。

問題: nameField から emailAddressField にタブ移動するか、emailAddressField からタブ移動すると、デリゲート didTapSomeField でメソッドが実行されます。最初のレスポンダー コードを 3 回確認しましたが、textField が someField と等しくない場合、if ステートメントの内容がまだ実行されているのはなぜですか? ご協力ありがとうございました!

#
# method. textFieldShouldReturn
#
def textFieldShouldReturn( textField )
#---------------------------------------

    if textField == self.nameField

      self.emailAddressField.becomeFirstResponder

    elsif textField == self.emailAddressField

      self.didTapDoneButton

    end

end


#
# method. textField shouldChangeCharactersInRange replacementString
#
def textField( textField, 
               shouldChangeCharactersInRange: range,
               replacementString: string )
#----------------------------------------------------

  if textField == self.nameField

      true

  elsif textField == self.emailAddressField

      true

  end

end


def textFieldShouldBeginEditing( textField )
#--------------------------------------------

  if ( textField == someField )

    self.delegate.didTapSomeField \
           if self.delegate.respond_to?( :didTapSomeField ) 

    false

  else

    true

  end

end


私も試しました:

def textFieldShouldBeginEditing( textField )
#--------------------------------------------

  if ( textField == someField )
    self.delegate.didTapSomeField \
           if self.delegate.respond_to?( :didTapSomeField )             
    false

  end

  true
4

1 に答える 1

0

replye_toをpublic_sendに置き換えてみてください

于 2013-01-18T22:42:09.583 に答える