Обнаружение, когда модальный вид был отображен - PullRequest
1 голос
/ 12 июля 2009

Это забавно ... У меня есть приложение, которое имеет экран справки и отображается в модальном режиме. Основное представление имеет действие, которое происходит при встряхивании устройства. Я не хочу, чтобы действие происходило (воспроизводились звуки), когда отображается экран справки.

Я пробовал несколько вещей ... вот мой код:

Чтобы отобразить экран справки:

- (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 Ответ

2 голосов
/ 12 июля 2009

Я предполагаю, что контроллер представления, который загружает модальный контроллер, также является контроллером представления, который реагирует на действие встряхивания. Если это так, то вы можете использовать свойство 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];
}
...