Frage

Ich habe eine ziemlich grundlegende Frage. Ich habe mehr (5) UIImageView Bilder auf mein Bildschirm. Wenn ich auf eine Schaltfläche klicken, möchte ich jedes Bild ändern auf etwas anderes. Ich möchte auch einen Ton spielen, da jedes Bild geändert wird.

Also habe ich im Grunde ein Klickgeräusch als jedes Bild ändert wollen.

Das Problem ist, aus irgendeinem Grund, wenn ich sagen 5 Bilder,
Der Ton wird gespielt 5 mal und dann die Bilder ändern.

Es ist wie die Bilder nur aktualisieren, wenn die Steuerung auf die geht zurück Benutzer zur Eingabe.

Wie kann ich „Kraft“ es die Bilder zu aktualisieren, sobald ich ihm sagen, was für ein Bild angezeigt wird?

Ich bin neu auf dem iphone / macworld, so gehen Sie einfach auf mich: -)

Rick

War es hilfreich?

Lösung

  

Es ist wie die Bilder nur aktualisiert werden, wenn die Steuerung an den Benutzer zur Eingabe geht zurück.

Das ist genau das, was passiert. Die Benutzeroberfläche ist auf dem Haupt-Thread aktualisiert, so dass kein Updates während des Code passiert ausgeführt wird.

Um dies zu erreichen, was Sie wollen, Sie gehen Timer zu müssen. Werfen Sie einen Blick auf die NSTimer Dokumentation. Sie benötigen einen Timer zu erstellen, das ein Verfahren feuert Ihr zweites Bild zu ändern und requeue dann einen Timer Ihr drittes Bild zu ändern. Es ist eine bequeme Methode einen Timer zu erstellen, wie Sie benötigen: + (NSTimer *)timerWithTimeInterval:(NSTimeInterval)seconds target:(id)target selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)repeats

[NSTimer timerWithTimeInterval:1.0f target:self selector:@selector(updateImage2:) userInfo:nil repeats:NO];

dann haben Sie eine Methode:

- (void) updateImage2(NSTimer*)theTimer
{

     //Update image 2 here
     // play sound 2 here

    [NSTimer timerWithTimeInterval:1.0f target:self selector:@selector(updateImage3:) userInfo:nil repeats:NO];
}

Ich werde es Ihnen überlassen, die Methode zu implementieren updateImage3:; -)

Ausführen des Updates wie dies dem Haupt-Thread eine Chance gibt, die Benutzeroberfläche zu aktualisieren.

Andere Tipps

Wenn Sie nach einem Weg suchen, um die UIImageView in regelmäßigen Abständen zu aktualisieren, können Sie die folgenden Referenz: http://www.shanison.com/2010/12/ 25 / UIImageView-Last-remote-image /

Es klingt wie Sie wahrscheinlich die Bilder aus Platte oder im Netzwerk geladen, während ein Ton asynchron zu spielen. Vielleicht sind Sie mit AudioServicesPlaySystemSound zusammen mit UIImage +imageWithContentsOfURL:? Der eigentliche Bild Laden und Ton spielt Code am nützlichsten wäre hier.

Das funktionierte für mich, wenn ich wollte Hintergrund ändern UIImageView und es zu aktualisieren, und weiterhin Code danach ausführen:

-(void)imgTapped_event:(UIImageView*)imgViewTapped
{
     imgViewTapped.backgroundColor=[UIColor whiteColor];

     //let the system update ui changes
     [NSRunLoop currentRunLoop]runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.0f]];

     //continue your code execution, play sounds etc...

     //my helper method to play sound
     [self playSound:@"goodAnswer" sync:YES loops:0]; 
 }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top