UITextField Target/Action vs委托方法

问题描述:

我曾经使用XCode开发我的应用程序并使用它;我可以创建在IB /故事板的链接了该合成方法这样:UITextField Target/Action vs委托方法

- (void)addTarget:(id)target action:(SEL)action forControlEvents: (UIControlEvents)controlEvents 

何时

但是,没有我编程做这一切(在rubymotion,虽然不一定有关),展望为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方法。

这两种方法有什么区别?前者是否在幕后执行后者?我不明白为什么一个人会让我通过,另一个不会。我是否仅仅以不同于目标/行动方法在幕后执行委托方法?

反馈赞赏, pachun

这与目标/行动无关。我假设你的意思是在Interface Builder中你将从UITextField拖动到File's Owner并从HUD中选择委托。

做上述将有指定文本字段的委托,你就需要在代码中做这样的

@email_field.delegate = self 
@password_field.delegate = self 

上述效果假设创建了UITextField“的S级将作为行事的代表。

我不知道是否有在这种情况下,代表团与目标/行动之间的任何差别,但代表团这样工作的:

- (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; 
} 

问候