2012-04-12 4 views
0

ich meine UIActivityIndicator möchte nur starten, wenn die Aktion zu viel Zeit:Starten eines UIActivityIndicator nach einer Verzögerung auf ios

- (void) continueLaunch { 

     //operations 
     //..... 
     [activityIndic stopAnimating]; 

    } 

    //my current method 
    - (void)lauchApplication {   
     [activityIndic startAnimating]; 
     [self performSelector:@selector(continueLaunch) withObject:nil afterDelay:0.0f]; 
    } 

    //what I want to do 
    - (void)lauchApplication { 
     if ([self performSelector:@selector(continueLaunch) withObject:nil afterDelay:0.0f]duration > 1 second){ 
       [activityIndic startAnimating]; 
     } 
    } 

Wie kann ich das tun?

Antwort

4

Ich denke, die beste aproach ist der Indikator nach der Dauer, die Sie warten, beginnen soll, und wenn in irgendeinem Moment vor, dass die Dauer etwas passiert, können Sie es aufheben:

[self performSelector:@selector(startAnimation) withObject:nil afterDelay:1.0f] 

Und für sie aufheben (von Apple-Doc):

eine Warteschlange Nachricht abzubrechen, verwenden Sie die cancelPreviousPerformRequestsWithTarget: oder cancelPreviousPerformRequestsWithTarget: Selektor: Objekt: Methode.

2

Eine mögliche Lösung ist dies:

  1. erstellen Timer
  2. Starten Sie eine Methode B in einem anderen Thread jedes X sec
  3. Bei dem Verfahren B Kontrolle: Wenn die Methode Eine ist in Bearbeitung UND Timer ist> Y Zeit, dann starten Sie die Animation Ihrer Aktivitätsanzeige.
Verwandte Themen