UIBarButtonSystemItemCamera erst nach 6 Sekunden aktiv machen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • UIBarButtonSystemItemCamera erst nach 6 Sekunden aktiv machen

    Hallo Leute

    Meine App kommt gut voran. Nun stehe ich allerdings vor folgender Herausforderung. Ich lade eine WebView, welche oben einen Camerabutton beinhaltet. Das Problem ist, dass der Camerabutton das Laden der Seite unterbricht, und man dann auf einer unvollständig geladenen Seite landet, sofern man das nicht zu Ende abgewartet hat.

    Nun ist meine Idee, dem Camerabutton mitzuteilen, dass er sich erst nach 6 Sekunden aktiv schalten soll. Die WebViewDidFinish Methode geht leider nicht, da gerade diese WebView mehrere Frames lädt, und da mehrere Durchgänge laufen. Hier mein Code für den Button:

    Quellcode

    1. // If not iOS 5
    2. else
    3. { UINavigationController *navigationBarController = [[UINavigationController alloc] initWithRootViewController:webViewController];
    4. navigationBarController.navigationBar.tintColor = ATNavigationBarTintColor;
    5. if (viewController.tabBarItem.tag == 0) {
    6. webViewController.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(dismissWebView)];
    7. webViewController.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:@selector(TakePhoto)];
    8. }
    9. else if (viewController.tabBarItem.tag == 1) {
    10. webViewController.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(dismissWebView)];
    11. }
    12. navigationBarController.modalPresentationStyle = UIModalPresentationFullScreen;
    13. [self presentModalViewController:navigationBarController animated:YES];
    14. return NO;
    15. }
    16. }
    17. return YES;
    18. }
    Alles anzeigen


    Wie kann ich das bewerkstelligen, dass der Button erst nach 6 Sekunden aktiv wird? Idealerweise so, dass er einfach ausgegraut angezeigt wird, bis die 6 Sekunden erreicht sind?
  • Quellcode

    1. webViewController.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:@selector(TakePhoto) withObject:nil afterDelay:6.0];


    Ergibt mir leider einen Fehler... :(
  • So musst du es machen:
    statt

    Quellcode

    1. webViewController.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:@selector(TakePhoto)];
    schreibst du

    Quellcode

    1. [self performSelector:@selector(createBarButtonItem) withObject:nil afterDelay:6.0];

    Damit dies funktioniert fügst du folgende Methode dem ViewController hinzu:

    Quellcode

    1. -(void)createBarButtonItem {
    2. self.webViewController.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:@selector(TakePhoto)];
    3. }
  • Das geht auch ohne die Hilfsmethode:

    Quellcode

    1. UIBarButtonItem *theItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:@selector(TakePhoto)];
    2. [webViewController.navigationItem performSelector:@selector(setLeftBarButtonItem:) withObject:theItem afterDelay:6.0];
    „Meine Komplikation hatte eine Komplikation.“