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
截一张图,
- (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