Обнаружение при отображении модального представления
-
12-09-2019 - |
Вопрос
Это весело ... у меня есть приложение, которое имеет экран справки и отображается как модальный вид. Основное представление имеет действие, которое происходит, когда устройство встряхивается. Я не хочу, чтобы действие произошло (звуки воспроизводятся), когда отображается экран справки.
Я пробовал несколько вещей ... вот мой код:
Чтобы отобразить экран справки:
- (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];
}