0

我的 UIView 上有几个 UITextFields(在 UITableViewCells 内),带有“保存”UIButton。当用户单击“保存”按钮时,我想对 UITextFields 进行一些基本验证。

我已经覆盖了 textFieldDidEndEditing 以将我的每个 UITextField 数据保存到一个实例变量中;但是,如果用户在单击 UIKeyboard 的“返回”按钮或单击另一个 UITextField 之前单击保存按钮,则我最后一个 UITextField 中的数据永远不会保存到我的实例变量中,并且验证总是失败。

我正在寻找一种方法来触发“onBlur”(我知道那是 JS 的事情)类型的事件,以将 UITextField 中的字符串保存到我的实例变量中。

我查看了 UITextFieldDelegate 协议,但没有看到类似的内容。

有没有我可能会错过的方法?

4

2 回答 2

1

要触发textFieldDidEndEditing你的UITextField,你需要打电话

[_txt resignFirstResponder];

_txt你的UITextField

请注意,如果您没有对 _txt 的引用并且您需要找到第一响应者以便辞职您可以使用此问题中的解决方案Get the current first responder without using a private API

然后而不是打电话

[_txt resignFirstResponder];

你会打电话给

[self.view findAndResignFirstResponder];
于 2012-06-09T16:25:20.200 回答
1

试试这个 // 如果我们遇到换行符返回

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{   
    // enter closes the keyboard
    if ([string isEqualToString:@"\n"])
    {
        [textField resignFirstResponder];
        return NO;
    }
    return YES;
}

这将触发

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
    [textField resignFirstResponder];
    // Call webservice
    return YES;
}
于 2013-01-24T10:14:15.730 回答