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是零......