详见:看完这篇就不会再被keyWindow坑了
https://www.jianshu.com/p/b6964951a6be
经本人测试: 只有 老版本的 UIAlertView 会创建新的 Window, 从而改变keyWindow, 而 UIActionSheet 跟 新版本的 UIAlertViewController 都不会创建新的 Window, 但是这篇文章的意义在于 帮助了解了, 以下2个 window的 不同:
UIWindow *DelegatekeyWindow = [UIApplication sharedApplication].delegate.window;
UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow;
要往上加东西,最好是 使用 delegate.window , 而 keyWindow 是动态会变的, 而 keyWindow 是 window list 里面 最后一个 调用 makeKeyWindow的 window.