Erkennung, wenn eine modale Ansicht angezeigt wurde
-
12-09-2019 - |
Frage
Dies ist eine lustige ... Ich habe eine Anwendung, die einen Hilfebildschirm hat und als modale Ansicht angezeigt wird. Die Hauptansicht hat eine Aktion, die auftritt, wenn das Gerät geschüttelt wird. Ich möchte nicht, dass die Aktion auftritt (Geräusche werden gespielt), wenn der Hilfebildschirm angezeigt wurde.
Ich habe ein paar Dinge ausprobiert ... hier ist mein Code:
So zeigen Sie den Hilfebildschirm an:
- (IBAction)helpButtonPressed:(id) sender {
helpViewController = [[HelpViewController alloc] init];
[self presentModalViewController:helpViewController animated:YES];
}
So veröffentlichen Sie den Hilfebildschirm:
- (IBAction)buttonPressed:(id) sender {
[self dismissModalViewControllerAnimated:YES];
}
Ich habe das Folgende ohne Erfolg ausprobiert:
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");
}
Was ich dachte, ist, wenn es eine Funktion gibt, mit der ich erkennen kann, ob die Hilfeansicht angezeigt wird, werde ich zurückkehren, ohne die Geräusche zu spielen, wenn das Gerät geschüttelt wird ....
Irgendwelche Ideen?
Lösung
Ich gehe davon aus, dass der Ansichtsregler, der den Modal Controller lädt, auch der Ansichtsregler ist, der auf die Shake -Aktion reagiert. Wenn dies der Fall ist, können Sie den übergeordneten Ansichtsregler verwenden modalViewController
Eigenschaft, um festzustellen, ob der Modal Controller aktiv ist:
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];
}