3

我需要訪問keyWindow股價延長我的應用程序
- 添加一些指標視圖
- 訪問窗口的寬度和高度如何在ios中訪問共享擴展中的keyWindow?

我寫的份額擴展類下面一行:

UIWindow *mainWindow = [[UIApplication sharedApplication] keyWindow]; 

但是,它說「共享應用程序」不可用。
如何訪問共享擴展中的keyWindow?

需要您寶貴的建議。
在此先感謝

+0

我讀了答案,但我有一個類似的問題。我無法繼承視圖控制器,因爲我有一個自定義的UIWindow類,我想將其作爲子視圖添加到我的共享擴展中的'keyWindow'中。有誰知道這是怎麼做到的嗎? – Shwethascar

+0

截至目前'keyWindow'在共享擴展中不可用。嘗試將自定義窗口添加到當前視圖控制器的視圖,禁用viewcontroller導航欄的用戶交互(如果有)。我沒有嘗試過,但試了一下。 –

回答

0

共享應用程序不可用於擴展。您無法從共享擴展中訪問關鍵窗口。您可以從UINavigationController繼承ShareExtension View控制器的子類,並且可以呈現模式視圖控制器,然後導航也是可能的。在該模式視圖控制器中,您可以添加活動指示器。

-1

UIApplication不適用於擴展。要添加的指標來看,你就必須做到這一點通過你的UIViewController堆棧,但你可以得到屏幕的大小,這可能就足夠了,這取決於具體的使用情況下(SWIFT):

UIScreen.mainScreen().bounds.size 

more here關於[UIScreen mainScreen] .bounds與[UIApplcation sharedApplication] .keyWindow.bounds之間的區別?

更新

到使用UIScreen獲得大小的替代方法是導航視圖層次結構。這適用於視圖已經佈置的UIView或UIViewController中的任何地方。您還可以將指標添加到最上面的視圖。

// Find the top most view 
var view: UIView = self; 
while let higherView = view.superview { 
    view = higherView; 
} 

// Size you need 
var size: CGSize = view.frame.size; 

// Add the indicator 
let indicator: UIView = UIView(frame: CGRectMake(100, 100, 100, 100)); 
indicator.backgroundColor = UIColor.orangeColor(); 
view.addSubview(indicator); 
view.bringSubviewToFront(indicator); 
0
UIApplication *application = [UIApplication performSelector:@selector(sharedApplication)]; 
UIWindow *keyWindow = application.keyWindow; 

然而,keyWindow是零......