gpt4 book ai didi

ios - 多个 UITextField : textFieldShouldBeginEditing:/textFieldDidEndEditing: Ordering

转载 作者:行者123 更新时间:2023-11-29 01:09:38 27 4
gpt4 key购买 nike

我在 UIView 中有多个 UITextField。我在用户开始使用 textFieldShouldBeginEditing: 编辑字段之前更改 View 布局,然后通过 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:

然后我可以在 keyboardWillShow:textFieldShouldBeginEditing: 中执行需要完成的操作。但由于我无法获取当前的 UITextField (如 textFieldShouldBeginEditing:textFieldDidEndEditing:),我将无法正确地进行必要的更新。

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

最佳答案

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

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

关于ios - 多个 UITextField : textFieldShouldBeginEditing:/textFieldDidEndEditing: Ordering,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35913843/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com