检测何时显示模态视图

时间:2009-07-12 14:33:36

标签: iphone cocoa-touch shake motion-detection

这是一个有趣的...我有一个应用程序有一个帮助屏幕,并显示为模态视图。主视图具有在设备摇动时发生的操作。我不希望在显示帮助屏幕时发生动作(播放声音)。

我尝试了一些事情......这是我的代码:

显示帮助屏幕:

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

要发布帮助屏幕:

- (IBAction)buttonPressed:(id) sender {
    [self dismissModalViewControllerAnimated: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");
}

我在想的是,如果有一个功能允许我检测帮助视图是否正在显示,那么当设备被动摇时我将返回而不播放声音....

有什么想法吗?

1 个答案:

答案 0 :(得分: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];
}
相关问题