我如何调用didEndEditing?

时间:2011-10-20 14:09:59

标签: iphone objective-c uitextfield

我在iPhone应用上进行表单验证。我想在我的按钮提交上调用didEndEditing方法。我该怎么做?

这是我的代码

这是方法

-(void)didEndEditing:(UITextField*)textField;
{
   // Do Something!
}

我在这里调用方法

-(IBAction)btnSelected:(id)sender {
   UIBarButtonItem *bbi = (UIBarButtonItem *) sender;

   if (bbi.tag == 1) {

       [self didEndEditing]; // How do I call this method?
    }
 }

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

我假设您引用textViewDidEndEditing:?你不应该自己调用那个方法,当文本字段不再是第一个响应者时,它将被调用。从API文档:

  

此方法的实现是可选的。文本视图在关闭任何挂起的编辑并重新启动其第一个响应者状态后,会将此消息发送给其委托。您可以使用此方法拆除任何数据结构或更改编辑开始时设置的任何状态信息。

如果您需要验证,我建议您重构验证码并从textViewDidEndEditing:调用并提交。

您可以循环遍历所有文本字段:

for (UITextField *textField in [NSArray arrayWithObjects
                                self.textField1,
                                self.textField2,
                                nil]) {
   // validate textField
}

如果每个字段需要不同的验证,您可以创建一个更复杂的数据结构,其中包括每个字段的验证块,正则表达式等。

答案 1 :(得分:0)

您应该只在活动的textField上使用resignFirstResponder:

-(IBAction)btnSelected:(id)sender {
   UIBarButtonItem *bbi = (UIBarButtonItem *) sender;

   if (bbi.tag == 1) {

       [self.myActiveTextField resignFirstResponder];
    }
 }

然后,didEndEditing应该自己调用。