UIWindow - 关于弹出提示(Toast View)与键盘以及 Window 的关系梳理
变更记录
序号 | 录入时间 | 录入人 | 备注 |
---|---|---|---|
1 | 2017-06-07 | Alfred Jiang | - |
方案名称
UIWindow - 关于弹出提示(Toast View)与键盘以及 Window 的关系梳理
关键字
UIWindow \ Toast View \ 键盘 \ UIRemoteKeyboardWindow
需求场景
- 正确的弹出提示(Toast View)展示逻辑梳理
参考链接
(无)
详细内容
结论
Toast View 在 [[[UIApplication sharedApplication] windows] lastObject] 和 [[UIApplication sharedApplication] keyWindow] 的取舍:
- 在 iOS 7 上推荐添加 Toast View 至 [[[UIApplication sharedApplication] windows] lastObject]
- 在 iOS 8 上添加 Toast View 至任意都可以
- 在 iOS 9 之后推荐添加 Toast View 至 [[UIApplication sharedApplication] keyWindow]
分析数据
iOS 7
1 | (lldb) po [[UIApplication sharedApplication] windows] |
通过 [[[UIApplication sharedApplication] windows] lastObject] 可获取到 UITextEffectsWindow,
在 UITextEffectsWindow 上添加 Toast View
横竖屏切换:正常, Toast View 正常切换
键盘消失:正常,不会导致 Toast View 提前释放
1 | (lldb) po [[UIApplication sharedApplication] keyWindow] |
通过 [[UIApplication sharedApplication] keyWindow] 可获取到 UIWindow,
在 UIWindow 上添加 Toast View
横竖屏切换:异常, Toast View 无法正常切换
键盘消失:正常,不会导致 Toast View 提前释放
iOS 8
1 | (lldb) po [[UIApplication sharedApplication] windows] |
通过 [[[UIApplication sharedApplication] windows] lastObject] 可获取到 UITextEffectsWindow,
在 UITextEffectsWindow 上添加 Toast View
横竖屏切换:正常, Toast View 正常切换
键盘消失:正常,不会导致 Toast View 提前释放
1 | (lldb) po [[UIApplication sharedApplication] keyWindow] |
通过 [[UIApplication sharedApplication] keyWindow] 可获取到 UIWindow,
在 UIWindow, 上添加 Toast View
横竖屏切换:正常, Toast View 正常切换
键盘消失:正常,不会导致 Toast View 提前释放
iOS 9+
1 | (lldb) po [[UIApplication sharedApplication] windows] |
通过 [[[UIApplication sharedApplication] windows] lastObject] 可获取到 UIRemoteKeyboardWindow,
在 UIRemoteKeyboardWindow, 上添加 Toast View
横竖屏切换:正常, Toast View 正常切换
键盘消失:异常,会导致 Toast View 提前释放
1 | (lldb) po [[UIApplication sharedApplication] keyWindow] |
通过 [[UIApplication sharedApplication] keyWindow] 可获取到 UIWindow,
在 UIWindow, 上添加 Toast View
横竖屏切换:正常, Toast View 正常切换
键盘消失:正常,不会导致 Toast View 提前释放
效果图
(无)
备注
(无)