我有一个内置钢琴的应用程序。按下时每个键(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];
}
答案 0 :(得分:0)
我在项目中尝试了你的代码并且运行正常。我怀疑你错误配置了touchUp连接(可能连接了touchUpOutside,因为我不小心偶尔会这样做)。
答案 1 :(得分:0)
我最终创建了一个解决问题的方法。我已经在应用程序中有一个长按手势识别器,所以我添加到识别器状态结束[self stopMusic];它运行正常。我无法在另一个应用程序中复制该问题。它必须与正在运行的其他代码冲突。