2011-11-09 61 views
0

我想弄清楚如何使我的UITextField调用UITextFieldDelegate方法。下面是一些代码我用来创建控制器和文本字段:我是否必须为每个UITextField设置委托?

@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]; 

在我的控制器,如果我实现委托方法

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

    [textField resignFirstResponder]; 

    return YES; 
} 

它永远不会被调用。如果我设置fieldNumeroAppoggi.delegate = self;虽然,一切工作正常。如果我创建其他UITextField对象,我是否必须为它们中的每一个设置代理?

+0

我不知道我完全理解你的问题,但如果你问多UITextField实例是否可以共享一个代表(在这种情况下,个体经营),那么答案是肯定的。 –

回答

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

相关问题