UitextFieldターゲット/アクション対DELEGATEメソッド
-
12-12-2019 - |
質問
私はXcodeを使い、私のアプリを開発し、それを使用していました。このメソッドを合成したIB /ストーリーボードにリンクアップを作成できます。
- (void)addTarget:(id)target action:(SEL)action forControlEvents: (UIControlEvents)controlEvents
.
の場合
しかし、私はすべてプログラム的にそれをしています(ルベルモーションでは、必ずしも関連性がないが)、そしてUitextFieldのドキュメントを調べることは、次のように実装されたいくつかのデリゲートメソッドを見つけました:
def textFieldShouldReturn(text_field)
text_field.resignFirstResponder
end
def textFieldShouldEndEditing(text_field)
# this is for validations; don't set a first responder here
true
end
def textFieldDidEndEditing(text_field)
text_field == @email_field ? @password_field.becomeFirstResponder : delegate.validate_login_info
end
.
これを使用して、私はAddTargetアプローチで前に入力される可能性があるように、入力フィールド(ここに2つの電子メールとパスワードを持っている)をタブできなかったことがわかりました。
これら2つのアプローチの違いは何ですか?前者はシーンの後ろを後者に実装していますか?なぜ私がタブリをタブしてもう一つのことを許可するのかわかりません。ターゲット/アクションアプローチとは異なる方法を実装しましたか?
フィードバック パチュン
解決
これはターゲット/アクションとは関係ありません。Interface Builderでは、UITextField
からFile's Owner
にドラッグし、HUDからDELEGATEを選択します。
上記のことをすることは、こののようなコードで行う必要があるテキストフィールドの代理人を割り当てることができるという効果があります。
@email_field.delegate = self
@password_field.delegate = self
.
上記は、UITextField
を作成するクラスがデリゲートとして機能すると仮定しています。
他のヒント
この場合の委任とターゲット/アクションの間に違いがあるかどうかはわかりませんが、このようにして委任を取得します。
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
if (textField == self.firstTextField)
{
[self.secondTextField becomeFirstResponder];
}
else if (textField == self.secondTextField)
{
[textField resignFirstResponder];
// proceed with login
}
return YES;
}
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
// Validation
return YES;
}
.
wares
所属していません StackOverflow