我在iOS 9中遇到了一个非常不幸的bug。当你设置
我包含了一个gif来演示这个问题。当视图变为红色时,它的
注意:下面是我创建和设置附件视图的方式。在AccessoryViewController.m中没有什么值得注意的地方。在一个干净的项目中重现了这个问题。在iOS 8上不存在这个问题。
UITextField.inputAccessoryView
时,该视图的viewWillDisappear:
和viewDidDisappear:
方法会过早地被调用(就在键盘完成上升动画时)。我包含了一个gif来演示这个问题。当视图变为红色时,它的
viewWillDisappear:
方法已经被调用。奇怪的是,当你关闭键盘时,viewWillDisappear:
和viewDidDisappear:
会再次被调用。然而,viewWillAppear:
只会被调用一次。
有人遇到类似的问题吗?我使用viewWillDisappear:
和viewDidDisappear:
来关闭控制器,显然过早的调用会导致不想要的行为。注意:下面是我创建和设置附件视图的方式。在AccessoryViewController.m中没有什么值得注意的地方。在一个干净的项目中重现了这个问题。在iOS 8上不存在这个问题。
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
if (self.textField.inputAccessoryView == nil) {
self.textField.inputAccessoryView = self.vc.view;
}
return YES;
}
- (UIViewController *)vc {
if (!_vc) _vc = [[AccessoryViewController alloc] init];
return _vc;
}
textFieldDidEndEditing:
方法中设置一个输入附件视图上的BOOL值。然后在我的viewWillDisappear:
和viewDidDisappear:
方法中,我会检查该BOOL值是否已设置,然后再关闭控制器。 - Matt