美文网首页
iOS UIRemoteKeyboardWindow

iOS UIRemoteKeyboardWindow

作者: 天空中的球 | 来源:发表于2020-07-07 20:08 被阅读0次

    在我们弹出 UIActivityViewController 后 最外层 window 默认成 了UIRemoteKeyboardWindow, 从而导致了一些问题,在此记录下。

    了解: 在 iOS9 之前,键应用程序窗口顶部的第二个UIWindow(窗口级别高于UIWindowLevelNormal)覆盖了包括键盘在内的所有窗口。视图层次结构显示键盘在 UITextEffectsWindow 中。
    但是,iOS9 中的键盘位于另一个窗口 UIRemoteKeyboardWindow 中,该窗口位于所有其他窗口的顶部。在键盘上方设置自定义 UIWindow 似乎并不简单。一种解决方案是在显示/隐藏自定义窗口时手动关闭/显示键盘。

    • UIRemoteKeyboardWindow 出现的时机
    • UIRemoteKeyboardWindow 可能产生的问题
    一、UIRemoteKeyboardWindow 出现的时机
    • UIActivityViewController 弹窗时
    • iOS 9 之后当键盘 弹出后出现
    UIRemoteKeyboardWindow

    PS: 有小伙伴说UIAlertController 弹出时也出现这个window,我测试了好几个版本也没发现。

    二、UIRemoteKeyboardWindow 可能产生的问题
    • 之前获取的最外层 Window 不是我们想要的那一层
    [UIApplication sharedApplication].windows
    

    所以此处要针对其作出相应的判断

    • 键盘的显示和隐藏, 其实还是 最外层 Window 的问题。

    PS: UIWindow

    • 1、UIWindow是一种特殊的UIView,通常在一个 app 中至少会有一个UIWindow。
    • 2、UIWindow 是有层级的
    UIKIT_EXTERN const UIWindowLevel UIWindowLevelNormal; // 0
    UIKIT_EXTERN const UIWindowLevel UIWindowLevelAlert; // 2000
    UIKIT_EXTERN const UIWindowLevel UIWindowLevelStatusBar; // 1000
    

    而 UIRemoteKeyboardWindow 是在更上层的。

    相应解决方法
    • 找到自己要的那一层就好了。
    • 对 UIRemoteKeyboardWindow 可以直接隐藏 hidden 的。

    相关文章

      网友评论

          本文标题:iOS UIRemoteKeyboardWindow

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