点击UIWindows

时间:2012-12-26 13:44:15

标签: iphone objective-c ios cocoa-touch uiview

我一直在关注所有内容example,以便在UIWindow之上创建statusBar

我的UIWindow显示在statusBar之上,一切正常,但应用的实际视图(带按钮的视图)不响应我的操作:

enter image description here

我正在使用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的触摸吗?怎么办?

1 个答案:

答案 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];
}