2009-07-12 10 views
1

これは楽しいものです...ヘルプ画面があり、モーダルビューとして表示されるアプリケーションがあります。メインビューには、デバイスが動揺したときに発生するアクションがあります。私はヘルプ画面が表示されているときにアクションが発生する(サウンドが再生される)ようにはしません。モーダルビューが表示されたときの検出

- (IBAction)buttonPressed:(id) sender { 
    [self dismissModalViewControllerAnimated:YES]; 
} 

私が試した:

- (IBAction)helpButtonPressed:(id) sender { 
    helpViewController = [[HelpViewController alloc] init]; 
    [self presentModalViewController:helpViewController animated:YES]; 
} 

は、ヘルプ画面を解除するには:

は、ヘルプ画面を表示するには:

私はここに私のコードです...いくつかのことを試してみました成功しなかった以下のもの:

if ([helpViewController.view isHidden ]) { 
    NSLog(@"Shake -- helpView is loaded"); 
} else { 
    NSLog(@"Shake -- helpView is not loaded"); 
} 


if ([helpViewController isViewLoaded]) { 
    NSLog(@"Shake -- helpView is loaded"); 
} else { 
    NSLog(@"Shake -- helpView is not loaded"); 
} 

if ([self isViewLoaded]) { 
    NSLog(@"Shake -- helpView is loaded"); 
} else { 
    NSLog(@"Shake -- helpView is not loaded"); 
} 

私が考えていたことは、ヘルプビューが表示されているかどうかを検出できる機能があれば、デバイスが動揺したときに音を鳴らさずに戻ります....

アイデアはありますか?

答えて

2

私は、モーダルコントローラーをロードするビューコントローラーも、シェイクアクションに応答するビューコントローラーであると仮定しています。この場合、親ビューコントローラのmodalViewControllerプロパティを使用して、モーダルコントローラがアクティブかどうかを確認できます。

if(self.modalViewController != nil) { 
    // Modal view controller is active; do nothing 
    NSLog(@"Shake -- helpView is loaded"); 
    return; 
} else { 
    // No modal view controller; take action 
    NSLog(@"Shake -- helpView is not loaded"); 
    [self performSomeAction]; 
}
+0

完璧に機能します。ありがとう! –

関連する問題