【问题标题】:Multiple UITextField: textFieldShouldBeginEditing: / textFieldDidEndEditing: Ordering多个 UITextField: textFieldShouldBeginEditing: / textFieldDidEndEditing: 排序
【发布时间】:2016-03-10 10:30:02
【问题描述】:

我在 UIView 中有多个 UITextField。我在用户开始使用 textFieldShouldBeginEditing: 编辑字段之前更改视图布局,然后通过 textFieldDidEndEditing: 恢复它。

例如

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
    NSLog(@"%s", __FUNCTION__);
    // Change UIView layout
    return YES;
}

- (void)textFieldDidEndEditing:(UITextField *)textField
{
    NSLog(@"%s", __FUNCTION__);
    // Restore UIView layout
}

但是,如果我在编辑 UITextField 时单击另一个 UITextField,则执行顺序为:

  1. 另一个UITextFieldtextFieldShouldBeginEditing:
  2. 当前UITextFieldtextFieldDidEndEditing:

又名控制台日志:

textFieldShouldBeginEditing:
textFieldDidEndEditing:

在这种情况下,UIView 布局设置将不正确。我也试过textFieldShouldEndEditing:,但没有改变顺序。

如果我将 KVO 样式的观察者添加到 UIKeyboardWillShowNotification / UIKeyboardWillHideNotification,则顺序为:

textFieldShouldBeginEditing:
keyboardWillShow:
textFieldShouldBeginEditing:
textFieldDidEndEditing:
keyboardWillShow:

然后我可以在textFieldShouldBeginEditing: 中在keyboardWillShow: 中做需要做的事情。但由于我无法像textFieldShouldBeginEditing:textFieldDidEndEditing: 那样获得当前的UITextField,因此我将无法正确进行必要的更新。

我知道我可以设置另一个变量来跟踪当前的编辑状态,但是有没有更好的方法来确保一个 UITextField 在切换之前完成了编辑?

【问题讨论】:

  • 你试过添加观察者吗?比如keyboardWillShow和KeyboardWillHide
  • 第一响应者可能会帮助您获取当前文本字段?
  • @zcui93 我确实使用isFirstResponder 对两个文本字段进行了检查。似乎他们都不是当textFieldDidEndEditing: 被调用时,所以不能做我想做的事。
  • 在键盘通知方法中检查它们? textField 结束编辑后,他们不再是第一响应者。
  • 我只是想知道,如果您在每个“开始编辑”中保存当前的第一响应者并在前一个上调用 resignFirstResponder(如果已设置)会怎样。这样,您可能会强制从“开始编辑”中立即调用“结束编辑”。

标签: ios objective-c iphone uitextfield uitextfielddelegate


【解决方案1】:

您是否尝试过为您的文本字段分配一个标签,然后以此为基础制定您的逻辑?

UITextField *yourTextField = (UITextField *)[self.view viewWithTag:result];

【讨论】:

  • 您建议我使用标签来跟踪当前文本字段?当有很多字段时,这可能会有所帮助,但仍然需要一个额外的变量来进行跟踪并使用 KVO。我会为您的意见投赞成票,但会留下问题,看看是否有更好的解决方案。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-10
  • 1970-01-01
相关资源
最近更新 更多