我一直在关注这个例子中的一切创建UIWindow
在顶部statusBar
。
我UIWindow
被显示在顶部statusBar
所有的罚款,但应用程序(带有按钮)的实际视图不会对我的行动作出回应:
我用故事板和iOS6的。 这是我创建的代码statusBar
覆盖:
- (void)viewDidAppear:(BOOL)animated {
UIWindow *overlayWindow = [[ACStatusBarOverlayWindow alloc] initWithFrame:CGRectZero];
AppDelegate *app = [[UIApplication sharedApplication] delegate];
overlayWindow.rootViewController = app.window.rootViewController;
app.window = overlayWindow;
[overlayWindow makeKeyAndVisible];
}
下视图statusBar
没有回应,我不能水龙头UIButton
。 是否有可能以某种方式使我的应用程序的接口的UIWindow接受触摸忽略ACStatusBarOverlayWindow
? 那怎么可以呢?
通常,如果一个按钮没有对触摸做出反应,那是因为按键是它的范围之外的父母UIView的。
您的代码似乎并没有得到相应的方法,你正在试图解决这个问题。 如果你只需要你的窗口有一个状态栏,或者你只需要一个按钮添加到您当前视图,你这样做的方式可能不正确。
个人而言,我从来没有见过任何实例化一个UIWindow在viewDidAppear,因为应用程序具有它自己的UIWindow。 您应该使用一个UIView并添加您覆盖它。
作为一个侧面说明,如果你要做到这一点,你要尝试的方式,那么你的窗口将至少需要一个框架。 所以initWithFrame:方法CGRectZero是initWithFrame:方法CGRectMake(0,0,320,480)或类似的规定。
一个更好的办法来解决这个问题是实例化一个UIViewController并将其设置为你的RootViewController的。 或者干脆添加按钮,将当前的viewController的视图。
- (void)viewDidLoad {
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self
action:@selector(myMethod:)
forControlEvents:UIControlEventTouchUpInside];
[button setTitle:@"Tap Me" forState:UIControlStateNormal];
[button sizeToFit];
[self.view addSubview:button];
}