そこで、デバイスを振ると音が鳴るプログラムを作成しました。タップするといつでもサウンドの再生を停止するボタンがあります (これは「リセット」メソッドです)。別のボタンがあり、押すと別のビューが表示されます (これは「infoView」メソッドです)。「infoView」に移動してから最初のビューに戻ると、問題が発生します。デバイスを振ると音は鳴りますが、「リセット」ボタンは反応しなくなります。ここに私がこれまでに持っているものがあります。
PS。FirstResponders と何か関係があるのでしょうか? 私はまだ FirstResponders に頭を悩ませようとしています。
.h
#import <UIKit/UIKit.h>
#import "AVfoundation/AVfoundation.h"
@interface OldTvViewController : UIViewController{
AVAudioPlayer *audioPlayer;
}
-(IBAction)reset;
-(IBAction)infoView:(id)sender;
@end
彼ら
#import "OldTvViewController.h"
#import "AudioToolBox/AudioToolBox.h"
#import "infoViewController.h"
@implementation OldTvViewController
-(IBAction)infoView:(id)sender{
infoViewController *second = [[infoViewController alloc] initWithNibName:Nil bundle:Nil];
[self presentModalViewController:second animated:YES];
[second release];
}
-(BOOL) canBecomeFirstResponder{
return YES;
}
-(void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event{
if (event.subtype == UIEventSubtypeMotionShake) {
//Play throw sound
if(audioPlayer.playing){
[audioPlayer stop];
} else{
NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/bomb.mp3",[[NSBundle mainBundle] resourcePath]]];
NSError *error;
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
audioPlayer.numberOfLoops = 0;
[audioPlayer play];
}
}
}
-(IBAction)reset{
[audioPlayer stop];
}
-(void)viewDidAppear:(BOOL)animated{
[self becomeFirstResponder];
[super viewDidAppear:animated];
}
- (void)viewDidLoad
{
[super viewDidLoad];
}
@end