Переключение между UIB-кнопками воспроизведения / паузы - PullRequest
0 голосов
/ 02 февраля 2012

Я создал две кнопки UIB, и на панели UIToolbar отображается только кнопка воспроизведения.В методе воспроизведения, который мне нужен, при нажатии кнопки воспроизведения отображается кнопка паузы, а если пользователь нажимает кнопку паузы, он приостанавливает аудиофайл, а затем показывает кнопку воспроизведения.

UIButton *playButton = [UIButton buttonWithType:UIButtonTypeCustom];

[playButton addTarget:self action:@selector(play:) forControlEvents:UIControlEventTouchUpInside];

playButton.frame = CGRectMake(0, 0, 50, 50);

UIImage *image = [UIImage imageNamed:@"play.png"];

[playButton setImage:image forState:UIControlStateNormal];

UIBarButtonItem *play = [[UIBarButtonItem alloc] initWithCustomView:playButton];



UIButton *pauseButton = [UIButton buttonWithType:UIButtonTypeCustom];

 [pauseButton addTarget:self action:@selector(pause:) forControlEvents:UIControlEventTouchUpInside];

pauseButton.frame = CGRectMake(0, 0, 50, 50);

UIImage *imge = [UIImage imageNamed:@"pause.png"];

[pauseButton setImage:imge forState:UIControlStateNormal];

-(void)play:(id)sender 
{

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"theme" 
                                                     ofType:@"mp3"];

NSURL *fileURL = [[NSURL alloc] initFileURLWithPath:filePath];

audioPlayer = [[AVAudioPlayer alloc] 
              initWithContentsOfURL:fileURL error:nil];

audioPlayer.currentTime = 0;

[audioPlayer play];

[fileURL release];  

}

Мне нужна помощь в реализации этого

В методе воспроизведения

я сделал

[audioPlayer play];

UIImage *imge = [UIImage imageNamed:@"pause.png"];

[pauseButton setImage:imge forState:UIControlStateNormal];

[audioPlayer pause];

UIImage *image = [UIImage imageNamed:@"play.png"];

[playButton setImage:image forState:UIControlStateNormal];

[audioPlayer Play];

Я думаю, что я делаю неправильно

Пожалуйста, совет.

Спасибо за помощь.

Спасибо

Ответы [ 3 ]

2 голосов
/ 02 февраля 2012

Используйте только одну кнопку с 1 изображением для каждого состояния (Выбрано и Нормально):

UIButton *mediaButton = [UIButton buttonWithType:UIButtonTypeCustom];
mediaButton.frame = CGRectMake(0, 0, 50, 50);

[mediaButton setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateNormal];
[mediaButton setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateSelected];

[playButton addTarget:self action:@selector(mediaAction:) forControlEvents:UIControlEventTouchUpInside];

-(void)mediaAction:(UIButton *)sender 
{
   if(sender.selected){
    // pause action
   } else {
    // play action
   }

    sender.selected = !sender.selected;
}
1 голос
/ 02 февраля 2012

Вам не нужно создавать две отдельные кнопки. Просто создайте одну кнопку и один метод. Просто держите состояние в логической переменной или используйте состояние игрока. Делайте то, что вам нужно, после проверки состояния в методе.

Однако, если вы настаиваете на создании двух отдельных кнопок, вы можете скрыть и показать одну из кнопок.

0 голосов
/ 02 февраля 2012

Вы имеете в виду:

if([audioPlayer isPlaying]) {
    UIImage *imge = [UIImage imageNamed:@"pause.png"];
    [pauseButton setImage:imge forState:UIControlStateNormal];
    [audioPlayer pause];
}
else {
    UIImage *image = [UIImage imageNamed:@"play.png"];
    [playButton setImage:image forState:UIControlStateNormal];
    [audioPlayer Play];
}

правильно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...