看板 MacDev 關於我們 聯絡資訊
小弟公司目前有寫一個庫讓別人用, 裡面有一個功能是彈出一個viewcontroller的彈窗,原本在ios13之前, 只要用 [UIApplication sharedApplication].keyWindow.rootViewController 就可以取得當前viewcontrller,然後再把我的彈窗顯示在上面。 但在ios 13的時候,已無法使用,改用以下方式: -(UIViewController *)getKeyWindow{ NSArray *windows = [UIApplication sharedApplication].windows; for(UIWindow *window in [windows reverseObjectEnumerator]) { if ([window isKindOfClass:[UIWindow class]] && CGRectEqualToRect(window.bounds, [UIScreen mainScreen].bounds)){ return window.rootViewController; } } return [UIApplication sharedApplication].keyWindow.rootViewController; } 現在ios14開始又取不到當前viewcontroller,想請問有人是否遇到這樣問題 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.163.68.55 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/MacDev/M.1606401272.A.DC5.html
yuanruo: 如果你rootviewcontroller沒變的話 1.160.165.218 11/29 00:21
yuanruo: 何不直接取application delegate.window 1.160.165.218 11/29 00:23
yuanruo: 我是覺得這樣寫不好~但誰也不知你對 1.160.165.218 11/29 00:24
yuanruo: keywindow做了啥 或是你app有幾個window 1.160.165.218 11/29 00:24
slacash: 請問大大如何確認rootviewcontroller改223.137.160.156 11/29 02:44
slacash: 變,改變了該如何做?223.137.160.156 11/29 02:44
yuanruo: 通常都是變KeyWindow, 查查有沒有呼叫到 36.226.10.120 11/29 15:08
yuanruo: makeKeyWindow 這個函數 或是登出時是 36.226.10.120 11/29 15:10
yuanruo: 切換RootViewController方式 36.226.10.120 11/29 15:11
yuanruo: 那可以找makeKeyAndVisible 36.226.10.120 11/29 15:11
yuanruo: 不過你應該先在你for迴圈裡印每個window 36.226.10.120 11/29 15:12
yuanruo: 再去排查比較快 36.226.10.120 11/29 15:12
yuanruo: 或是你呼叫時之前present 一個VC 36.226.10.120 11/29 15:14
yuanruo: 那你整個window結構也會變 36.226.10.120 11/29 15:14
slacash: 大大再請問一下 如果只有一個window 但223.137.160.156 11/29 22:08
slacash: 有多個subview需要抓最上層的subview嗎223.137.160.156 11/29 22:08
yuanruo: 不懂抓subView要做什麼 有subviews代表 1.162.196.16 11/29 23:54
yuanruo: 你曾addSubView很多到window上,意義是? 1.162.196.16 11/29 23:55
yuanruo: 如果裝置是iPad建議還是不要用keywindow 1.162.196.16 11/29 23:59
yuanruo: 因為他在iOS13 被棄用 但iPhone則沒差 1.162.196.16 11/30 00:00