1

我一直在遵循这个例子来创建一个UIWindowstatusBar.

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? 怎么可能呢?

4

1 回答 1

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];
}
于 2012-12-26T15:54:09.843 回答