私の 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