如果按下按钮则播放声音

时间:2014-02-14 14:49:37

标签: ios objective-c audio freeze

我正在创建一个基于iOS的游戏,需要一些帮助。我想写一些代码,当按下屏幕上的按钮时播放声音。我在整个故事板上放了一个大按钮,用它来实现我的声音文件:

- (IBAction)sound; {
    CFBundleRef mainBundle = CFBundleGetMainBundle();
    CFURLRef soundFileURLRef;
    soundFileURLRef = CFBundleCopyResourceURL(mainBundle, (CFStringRef) @"hit1", CFSTR ("wav"), NULL);
    UInt32 soundID;
    AudioServicesCreateSystemSoundID(soundFileURLRef, &soundID);
    AudioServicesPlaySystemSound(soundID);
}

如果我启动我的应用程序并点击屏幕,声音会播放但我的整个显示屏都会冻结,我只看到一个冻结的屏幕并播放按钮声音。

有谁知道解决方案?

谢谢。

1 个答案:

答案 0 :(得分:0)

您的屏幕没有响应,因为您的屏幕顶部有一个按钮。创建一个IBOutlet并将其连接到您的按钮。然后按下按钮时,隐藏按钮。

一个例子是:

你的.h

中的

IBOutlet UIButton *playBtn;
你的.m中的

- (IBAction)sound {

CFBundleRef mainBundle = CFBundleGetMainBundle();
CFURLRef soundFileURLRef;
soundFileURLRef = CFBundleCopyResourceURL(mainBundle, (CFStringRef) @"hit1", CFSTR ("wav"), NULL);
UInt32 soundID;
AudioServicesCreateSystemSoundID(soundFileURLRef, &soundID);
AudioServicesPlaySystemSound(soundID);

// Hide button when user presses the button

playBtn.hidden =YES;

}

确保将Interface Builder中的IBOutlet连接到按钮。

您还可以尝试UIGestureRecognizer来检测屏幕上的点按。