iOS 8切换应用程序导致键盘解除,pointInside表现不同

时间:2014-10-04 02:33:04

标签: objective-c ios8 uitextfield

非常奇怪的iOS 8错误。

  • 我的iOS应用有一些UIViewControllerUITextfield 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中)会导致这种行为如此奇怪?非常感谢你的帮助。

0 个答案:

没有答案