0

我希望有人能引导我朝着正确的方向前进。

按下按钮后,我需要能够一次更新屏幕上的图像。似乎它们仅在周期结束时才更新,这不是我需要它的工作方式。

我创建了一个小例子来展示我在做什么。基本上我在屏幕上有 3 张图像。按下按钮时,我想更新第一张图像,播放声音,稍等片刻,然后更新下一张等。

但是,我只听到 1 个声音,最后所有图像都会更新。

似乎是一件简单的事情。我应该怎么做?

#import "testappViewController.h"

@implementation testappViewController


@synthesize p1,p2,p3;   //UIImageViews
@synthesize button1;
@synthesize volleyFileID;

- (IBAction)buttonpressed:(id)sender
{
    NSString *TLS = @"RQP.png";

    NSString *volleyPath = [[NSBundle mainBundle] pathForResource:@"click" ofType:@"caf"];
    CFURLRef volleyURL = (CFURLRef ) [NSURL fileURLWithPath:volleyPath];
    AudioServicesCreateSystemSoundID (volleyURL, &volleyFileID);

    TLS = @"RQP.png"; 
    UIImage *sampleimage=   [[UIImage imageNamed:TLS] retain];
    p1.image = sampleimage; 
    AudioServicesPlaySystemSound(volleyFileID);

    [NSThread sleepForTimeInterval:0.5];

    p2.image = sampleimage; 
    AudioServicesPlaySystemSound(volleyFileID);

    [NSThread sleepForTimeInterval:0.5];

    p2.image = sampleimage; 
    AudioServicesPlaySystemSound(volleyFileID);

}
4

1 回答 1

1

你不应该在这里使用 -[NSThread sleepForTimeInterval:] 。尝试使用-[NSObject performSelector:withObject:afterDelay:],你的后两个图像变成一个单独的方法。然后您的事件循环将正常运行,您的声音将播放,并且您的整个应用程序将在运行时保持响应。

于 2009-06-17T23:14:27.137 回答