AVAudioPlayer不会停止在Touch Up Inside上播放

时间:2014-01-12 21:49:36

标签: ios avaudioplayer playing

我有一个内置钢琴的应用程序。按下时每个键(Button1)开始播放音符,当用户抬起手指时,我希望音符停止播放。当按钮(Button1)上的停止功能设置为Touch Up Inside时,音频不会停止播放。如果我将操作从钢琴键(Button1)更改为另一个按钮(Button2),则按下按钮2时它将停止播放。

·H

#import <AVFoundation/AVAudioPlayer.h>

@interface FifthViewController : UIViewController <AVAudioPlayerDelegate> {
    AVAudioPlayer *theNote;

}

的.m

#import <AVFoundation/AVAudioPlayer.h>
#import <AVFoundation/AVFoundation.h>

//White
-(IBAction)note1w:(id)sender { //Touch Down

    [self whiteKey:self];
    [self downKey:self];

    NSString *path = [[NSBundle mainBundle] pathForResource:@"white1" ofType:@"aif"];
    theNote = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
    theNote.delegate = self;
    theNote.currentTime = 0;
    [theNote play];
}

-(IBAction)stopMusic { //Touch Up Inside - This is the action that I change from the Button1 (The Piano Key) to Button2 (A Reg UIButton) and it works.

    [theNote stop];

}    

2 个答案:

答案 0 :(得分:0)

我在项目中尝试了你的代码并且运行正常。我怀疑你错误配置了touchUp连接(可能连接了touchUpOutside,因为我不小心偶尔会这样做)。

答案 1 :(得分:0)

我最终创建了一个解决问题的方法。我已经在应用程序中有一个长按手势识别器,所以我添加到识别器状态结束[self stopMusic];它运行正常。我无法在另一个应用程序中复制该问题。它必须与正在运行的其他代码冲突。