UITextField目标/操作与委托方法
-
12-12-2019 - |
题
我曾经使用XCode开发我的应用程序并使用它;我可以在IB/Storyboard中创建一个链接来合成这些方法:
- (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方法一样。
这两种方法有什么区别?前者是否在幕后实施后者?我不明白为什么一个会允许我通过标签,另一个不会。我是否只是在幕后以不同的方式实现委托方法?
反馈赞赏, 帕春
解决方案
这与目标/行动无关。我假设你的意思是在界面生成器中,你会从 UITextField
向 File's Owner
并从HUD中选择委托。
执行上述操作会产生分配textField的委托的效果,您需要在如下代码中执行此操作
@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;
}
.
关于
不隶属于 StackOverflow