1

の上にを作成するために、すべてこのに従っています。UIWindowstatusBar

MyUIWindowは の上に表示され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の境界外にあるためです。

あなたのコードはあなたが解決しようとしている問題への適切なアプローチではないようです。ウィンドウにステータスバーを表示するだけでよい場合、または現在のビューにボタンを追加するだけでよい場合は、その方法が正しくない可能性があります。

個人的には、アプリには独自の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];
}
于 2012-12-26T15:54:09.843 に答える