我一直在关注所有内容example,以便在UIWindow
之上创建statusBar
。
我的UIWindow
显示在statusBar
之上,一切正常,但应用的实际视图(带按钮的视图)不响应我的操作:
我正在使用Storyboard和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
的触摸吗?怎么办?
答案 0 :(得分:0)
通常,如果一个按钮没有响应触摸,那是因为该按钮超出了它的父亲的UIView的界限。
您的代码似乎不是解决您尝试解决的问题的合适方法。如果你只是需要你的窗口有一个状态栏,或者你只需要在当前视图中添加一个按钮,那么你的方式可能是不正确的。
就我个人而言,我从未见过有人在viewDidAppear中实例化UIWindow,因为该应用程序附带了自己的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];
}