2011-11-09 14 views
0

私はUITextFieldDelegateメソッドをUITextFieldのために呼び出す方法を理解しようとしています。私は、デリゲートメソッドすべてのUITextFieldのデリゲートを設定する必要はありますか?

- (BOOL) textFieldShouldReturn:(UITextField *)textField{ 

    [textField resignFirstResponder]; 

    return YES; 
} 

が呼び出されることはありませんを実装する場合、私のコントローラで

@interface FirstViewController : UIViewController <UITextFieldDelegate> { 
    UITextField *fieldNumeroAppoggi; 
} 
@property (nonatomic,strong) UITextField *fieldNumeroArgomenti; 

fieldNumeroAppoggi = [[UITextField alloc] initWithFrame:CGRectMake(210, 40, 50, 20)]; 
fieldNumeroAppoggi.borderStyle = UITextBorderStyleRoundedRect; 
fieldNumeroAppoggi.tag = 1; 
[self.dettagli addSubview:fieldNumeroAppoggi]; 

:ここではいくつかの私は、コントローラと、テキストフィールドを作成するために使用するコードです。私がfieldNumeroAppoggi.delegate = self;を設定しても、すべて正常に動作します。他のUITextFieldオブジェクトを作成した場合は、そのオブジェクトの代理人を設定する必要がありますか?

+0

私は、私は完全にあなたの質問を理解していることをわからないんだけど、あなたは複数のUITextFieldインスタンスが(この場合には自己を)1つのデリゲートを共有できるかどうかを尋ねているならば、答えはイエスです。 –

答えて

3

私があなたを理解しているとすれば、はい、オブジェクトは複数のコントロールの代理人になることができます。どのコントロールがメッセージを送信したかに基づいて別の処理を行う必要がある場合は、そのハンドルをデリゲートハンドラで処理します。送信者を特定のオブジェクトと比較するか、tagプロパティを使用して特定のインスタンスを識別することができます。

例:

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{ 
    BOOL shouldReturn = YES; 

    if (textField == fieldNumeroAppoggi) { 
     // do something 
    } 
    else if (textField == aDifferentTextField) { 
     // do something different 
     // maybe this one shouldn't return 
     shouldReturn = NO; 
    } 

    return shouldReturn; 
} 
+0

mmmm、もし私が複数のテキストフィールドを持っているのであれば、デリゲートメソッドを使うためにfieldNumeroAppoggi.delegate = self; aDifferentTextField.delegate = self; ??ありがとうございました – kikko088

+0

はい、そうです。 – XJones

+0

完璧、ありがとう:D – kikko088

関連する問題