美文网首页iOS开发笔记
iOS11 UITextField 调用becomeFirstR

iOS11 UITextField 调用becomeFirstR

作者: Gary_Tseng | 来源:发表于2017-09-07 13:31 被阅读604次

    在iOS11的版本调用了becomeFirstResponder方法,但并没有弹出键盘,必须手动点击一下UITextField,才会显示键盘。

    iOS11还是测试版本,为了适配iOS11的版本,下载了Xcode9。调试的时候发现,在低版本键盘调起都不影响,唯独iOS11的测试版本无法调用。
    先分析下问题,程序中其它控制调用键盘没问题,出现问题的是购买密码弹框。密码弹框是自己新加了个window层,在这个图层做的UI。从这个winodw的界面中点击进入就不显示了。
    说明界面本身并没有问题,是自己新加的window导致了键盘弹不出。
    查了很多资料,最终发现是自己加载window层的时候并没有把这个window设为keywindow,导致它在响应链的位置有变化,所以不能成为第一响应者。

    解决办法:1、在这个新window显示时,把它设为keyWindow 2、调用becomeFirstResponder方法。

    UIWindow的常用方法:
    - (void)makeKeyWindow;
    让当前UIWindow变成keyWindow(主窗口)
    
    - (void)makeKeyAndVisible; 
    让当前UIWindow变成keyWindow,并显示出来
    
    UIWindow的获得:
    [UIApplication sharedApplication].windows
    获取当前应用的所有的UIWindow
    
    [UIApplication sharedApplication].keyWindow
    获取当前应用的主窗口
    view.window
    获得某个UIView所在的UIWindow
    

    相关文章

      网友评论

        本文标题:iOS11 UITextField 调用becomeFirstR

        本文链接:https://www.haomeiwen.com/subject/hlkijxtx.html