出现问题描述: 调用 becomeFirstResponder
键盘没有弹出, 但是手动点击textview
可以弹出键盘
[textview becomeFirstResponder]
解决问题思路:
查看textview所在的window是否是 keyWindow
, 找到 textview
是在自定义控件内部的, 这个自定义控件又被放到lastwindow
, 检查发现lastwindow
并不是 keyWindow
lastwindow.isKeyWindow 返回的是NO
解决: 将 lastwindow
设置成 keyWindow
, 再调用 [textview becomeFirstResponder]
键盘就响应了
[lastwindow makeKeyWindow]
UIWindow的常用方法:
让当前UIWindow变成keyWindow(主窗口)
- (void)makeKeyWindow;
让当前UIWindow变成keyWindow,并显示出来
- (void)makeKeyAndVisible;
获取当前应用的所有的UIWindow
[UIApplication sharedApplication].windows
获取当前应用的主窗口
[UIApplication sharedApplication].keyWindow
获得某个UIView所在的UIWindow
view.window
网友评论