Обнаружение при отображении модального представления

StackOverflow https://stackoverflow.com/questions/1116125

Вопрос

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

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

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

- (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");
}

Что я думал, так это то, что есть ли функция, позволяющая мне обнаружить, если отображается представление справки, я вернусь без воспроизведения звуков, когда устройство будет встряхнуть ....

Любые идеи?

Это было полезно?

Решение

Я предполагаю, что контроллер представления, который загружает модальный контроллер, также является контроллером представления, который реагирует на действие Shake. Если это так, то вы можете использовать контроллер родительского представления 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];
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top