我在UITextField
中有多个UIView
。我先更改视图布局,然后用户开始使用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
,则执行顺序为:另一个
UITextField
的textFieldShouldBeginEditing:
。当前
UITextField
的textFieldDidEndEditing:
。又名控制台日志:
textFieldShouldBeginEditing:
textFieldDidEndEditing:
在这种情况下,
UIView
布局设置将不正确。我也尝试了textFieldShouldEndEditing:
,但没有更改顺序。如果我将KVO样式观察者添加到
UIKeyboardWillShowNotification
/ UIKeyboardWillHideNotification
,则顺序为:textFieldShouldBeginEditing:
keyboardWillShow:
textFieldShouldBeginEditing:
textFieldDidEndEditing:
keyboardWillShow:
然后,我可以在
textFieldShouldBeginEditing:
的keyboardWillShow:
中执行所需的操作。但是由于无法像UITextField
和textFieldShouldBeginEditing:
那样获得当前的textFieldDidEndEditing:
,因此我将无法正确进行必要的更新。我知道我可以设置另一个变量来跟踪当前编辑状态,但是还有更好的方法来确保一个
UITextField
在切换之前结束编辑吗? 最佳答案
您是否尝试过为文本字段分配标签,然后根据其逻辑?
UITextField *yourTextField = (UITextField *)[self.view viewWithTag:result];
关于ios - 多个UITextField:textFieldShouldBeginEditing:/textFieldDidEndEditing:排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35913843/