iOS - becomeFirstResponder 键盘不弹出

1.一个上午都在解决UITextField调用becomeFirstResponse但是就是不能调起键盘的问题,光标都已经显示了。

我们的需求是点击button按钮才需要弹出键盘。现在的问题是代码调用becomeFirstRespon的不能弹出,手动点击的UITextField是可以的。

  • Google了一下,很多出现相似情况的,有的是iOS11才出现,我一看确实是,iOS10.3的就没问题。我测试用的就是iOS11的

  • 我调用了 canBecomeFirstResponder 发现是可以通过的,说明可以响应,但是就是调不起

  • 而且还有问题是:弹出键盘的高度。设置给整个view,view不能弹起。键盘还是遮挡的

  • 还有的说是因为弹出的新的window导致响应链断了,需要把当前的window设置成keywindow才行,要保存一起的keywindow。(一想,我这里确实是弹出了window,周年庆的活动弹窗)

按照这个帖子的做法,是可行的:http://blog.x7apk.com/105.html
截一张图,

image.png

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    
    for (UIWindow *window in [[UIApplication sharedApplication] windows]) {
        if(CGSizeEqualToSize([UIScreen mainScreen].bounds.size, window.frame.size)&&window.windowLevel==0.0 && !window.isKeyWindow){
            [window makeKeyAndVisible];
            break;
        }
    }
    
    for (UIWindow *window in [[UIApplication sharedApplication] windows]) {
        NSLog(@"isKeyWindow = %d window level = %.1f frame = %@ class = %@\n",
              window.isKeyWindow, window.windowLevel,
              NSStringFromCGRect(window.frame), window.class.description);
        
    }
}

2.下午的时候,把UITextField替换成了UITextView竟然没有这个问题了,我去了,而且也可以随着键盘,整个view弹起相应的高度

参考:https://www.jianshu.com/p/523b4048df8f
http://blog.x7apk.com/105.html

你可能感兴趣的:(iOS - becomeFirstResponder 键盘不弹出)