简体   繁体   English

iOS UITextField resignFirstResponder问题

[英]iOS UITextField resignFirstResponder issue

In my app, on registration screen, I have tableView which containes UITextField in each cell and Submit button in a footer. 在我的应用程序中,在注册屏幕上,我有tableView ,其中每个单元格包含UITextField ,而在页脚中包含Submit按钮。 Everything works fine except when I enter value in the last TextField and hit submit button (Without resigning a keyboard). 一切正常,除非当我在最后一个TextField输入值并点击Submit按钮(无需退出键盘)时。 My function does not show a value because value is only entered when text editing is ended. 我的函数没有显示值,因为仅在文本编辑结束时才输入值。 I am using Delegate to get a value. 我正在使用Delegate获得价值。

My code is: 我的代码是:
In customcell.m: 在customcell.m中:

- (void)textFieldDidEndEditing:(UITextField *)textField {
    if ([textField.text length] >0) {
    [self.cellImageview setImage:editImage];
    }
    else{
    [self.cellImageview setImage:defaultImage];
    }
    [_delegate signUpTableCell:self didUpdateValue:textField.text inTextField:textField];
}

In my viewController: 在我的viewController中:

-(void)signUpTableCell:(SignUpTableCell *)cell didUpdateValue:(NSString *)value inTextField:(UITextField *)textField    {
    NSLog(@"cell:%@    value: %@  textfield value:%@ ", cell, value, textField.text);
    [registerDictionary setValue:value forKey:textField.placeholder];
    NSLog(@"registerDictionary:%@", registerDictionary);
}

Problem: 问题:

Last textField value is nil when I click on submit button, probably because -(void)signUpTableCell:(SignUpTableCell *)cell didUpdateValue:(NSString *)value inTextField:(UITextField *)textField does not get a call unless textField ends editing. 当我单击提交按钮时,最后一个textField值为nil,这可能是因为-(void)signUpTableCell:(SignUpTableCell *)cell didUpdateValue:(NSString *)value inTextField:(UITextField *)textField不会调用,除非textField结束编辑。 If I click in empty place and resign a keyboard it works just fine. 如果我在空白处单击并辞职键盘,它就可以正常工作。 Is there a work around this problem? 是否有解决此问题的方法?

单击按钮时是否尝试手动调用resignFirstResponder()

Add below code to in submit button : 在提交按钮中添加以下代码:

[self.view endEditing:yes];

or use 或使用

[self.yourTableview.scrollView endEditing:yes];

Fixed it by making few changes in my code. 通过在我的代码中进行少量更改来修复它。 I had used [self.view endEditing:yes]; 我用过[self.view endEditing:yes]; after I get values from registerDictionary . 在我从registerDictionary获得值之后。 Stupid of me. 我真笨

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM