Кнопка UIB, отображающая вид, но не переключающая кнопку паузы - PullRequest
0 голосов
/ 06 февраля 2012

У меня есть UIButton, и с ним связано несколько действий

  1. Для воспроизведения аудиофайла
  2. Переключение между кнопками паузы воспроизведения
  3. Отображение просмотров

Если я закомментирую displayViewAction: он работает нормально (т. Е. Проигрывает аудиофайл, а также переключается на кнопку паузы).Но если я использую метод displayViewAction: он воспроизводит аудиофайл с отображением представления, но перед отображением представления он должен немедленно переключить состояние кнопки паузы, но это не так.

Код ниже для справки:

Код для кнопки UIB:

UIButton *playpauseButton = [UIButton buttonWithType:UIButtonTypeCustom];
[playpauseButton addTarget:self action:@selector(playpauseAction:) forControlEvents:UIControlEventTouchUpInside];
[playpauseButton addTarget:self action:@selector(displayviewsAction:) forControlEvents:UIControlEventTouchUpInside];
playpauseButton.frame = CGRectMake(0, 0, 50, 50);
[playpauseButton setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateNormal];
[playpauseButton setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateSelected];

UIBarButtonItem *playpause = [[UIBarButtonItem alloc] initWithCustomView:playpauseButton];

Код для кнопки воспроизведения:

-(void)playpauseAction:(id)sender 
{
  if ([audioPlayer isPlaying]){
      [sender setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateNormal];
      [audioPlayer pause];
  } 
  else {
      [sender setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateNormal];
      [audioPlayer play];
  }  
}

Код для действия при просмотре дисплея:

- (void)displayviewsAction:(id)sender
{
   self.view = [[[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]]autorelease];
   [self.view setFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];

   PageOneViewController *viewController = [[[PageOneViewController alloc] init]autorelease];
   [self.view addSubview:viewController.view];
}

Может кто-нибудь сообщить, какЯ могу заставить это работать таким образом?

Ответы [ 3 ]

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

Прикрепите только одно действие к вашей кнопке UIB. Когда вызывается это действие, выполняйте различные задачи в зависимости от состояния приложения.

1 голос
/ 06 февраля 2012

Вы не можете прикрепить много действий к вашей UIButton.

Почему бы вам не прикрепить функцию, которая переключает воспроизведение / паузу, а затем отображает представления?

[playpauseButton addTarget:self action:@selector(playpauseActionAndDisplayView:) forControlEvents:UIControlEventTouchUpInside];

тогда

-(void)playpauseActionAndDisplayView:(id)sender 
{
  [self playpauseAction:sender];
  [self displayviewsAction:sender];
}
0 голосов
/ 07 февраля 2012

Изменено UIControlState в методе playpauseAction следующим образом

-(void)playpauseAction:(id)sender 
{

  if  

  ([audioPlayer isPlaying]){

 [sender setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateSelected];

      [audioPlayer pause];

  } else {

 [sender setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateNormal];

      [audioPlayer play];

      [self displayviewsAction:sender];

  }  


}

и это сработало.

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