質問

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top