非常奇怪的iOS 8错误。
UIViewController
个UITextfield
s 我在iOS 7中通过在每个VC中添加类似的内容来修复此问题
- (void)keyboardWasShown:(NSNotification*)notification
{
id responder = [UIResponder currentFirstResponder];
if ([responder isKindOfClass:[UITextField class]]) {
_textFieldResponder = responder;
}
else {
_textFieldResponder = nil;
}
}
- (void)keyboardWillHide:(NSNotification*)notification
{
_textFieldResponder = nil;
}
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event usualReturn:(BOOL)rv
{
if (_textFieldResponder) {
CGPoint pvIn = [_textFieldResponder convertPoint:point fromView:self.view];
if (!CGRectContainsPoint(_textFieldResponder.bounds, pvIn)) {
[UIResponder resignAnyFirstResponder];
}
}
return rv;
}
和VC的viewDidLoad
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasShown:) name:UIKeyboardDidShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
这在iOS 7中运行良好。现在在iOS 8中,这也可以正常工作......
UNTIL!
在用户4指滑动到不同的应用程序然后返回之前,它一直正常工作。然后当uitextfield进入编辑模式时,点击键盘会直接将触摸发送到它后面的UIVew
,触发pointInside
并导致键盘解除。
你能不能帮我理解当离开应用程序时会发生什么事情(在iOS 8中)会导致这种行为如此奇怪?非常感谢你的帮助。