项目中需要做很多的提示框,选择框,这些都是添加 window 上的。
之前使用的 window 是 keyWindow
#define AGWindow [[UIApplication sharedApplication] keyWindow]
// 添加视图
[AGWindow addSubview:self];
正常显示:
在开发中,后来出现了添加在 window 上的控件位置出现错误的问题
异常显示:
视图不能够正常显示
项目中出现问题的原因
在项目中,有添加一个 topWindow ,设置的 frame 正好是上面错误显示时黑色视图部分,说明获取到的 keyWindow 是我们自己添加的 topWindow,视图被添加到了 topWindow 上面,因此出现错误
处理:
获取 AppDelegate 的 window 来添加视图
#define AGWindow [[UIApplication sharedApplication].delegate window]
注意:
keyWindow
说明:
查找应用程序的主窗口对象。一般情况就是UIWindow。当然一个应用程序可以有多个window,键盘是一个window,[[UIApplication sharedApplication] keyWindow]就是查找当前应用程序的主window
如果有实现自己的 customWindow,通过 [[UIApplication sharedApplication] keyWindow]
方法获取的 window 在默写情况下可能是你的 customWindow,需要特别注意