2012-05-04 1 views
0

Итак, я создал программу, в которой звучит звук, когда устройство встряхивается. Theres кнопка, что при нажатии останавливает звук от воспроизведения в любое время (это метод «сброса»). Есть еще одна кнопка, которая при нажатии отображает другое представление (это метод «infoView»). Проблема возникает, когда я перехожу к «infoView», а затем возвращаюсь к первому виду. Звук по-прежнему воспроизводится, когда устройство встряхивается, но кнопка «Сброс» становится невосприимчивой. Вот что я до сих пор, любая помощь была бы оценена.UIButton мертв после того, как я меняю виды и переключаюсь обратно

PS. Мне интересно, имеет ли это отношение к FirstResponders? Я все еще пытаюсь обернуть голову вокруг FirstResponders.

заголовочных

#import <UIKit/UIKit.h> 
#import "AVfoundation/AVfoundation.h" 

@interface OldTvViewController : UIViewController{ 
AVAudioPlayer *audioPlayer; 
} 
-(IBAction)reset; 
-(IBAction)infoView:(id)sender; 
@end 

.m

#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 
+0

, когда Вы идете к информации ввиду то, где все ваши кнопки доступны в этом классе вы попробуете этот код. – vishiphone

ответ

1

, когда Вы идете к информации ввиду то, где все ваши кнопки доступны в этом классе вы пытаетесь этот код.

-(void)viewWillDisapeers 
{ 

    [audioPlayer stop]; 

} 

или добавить в этом методе

-(IBAction)infoView:(id)sender 
{ 
infoViewController *second = [[infoViewController alloc] initWithNibName:Nil bundle:Nil]; 
[self presentModalViewController:second animated:YES]; 
[audioPlayer stop]; 
[second release]; 
}