UIButton显示视图,但不切换到暂停按钮



我有一个UIButton,它有多个与之相关的操作

  1. 播放音频文件
  2. 在播放暂停按钮之间切换
  3. 显示视图

如果我注释掉displayViewAction:它运行良好(即播放音频文件并切换到暂停按钮)。但如果我使用displayViewAction:方法,它正在播放音频文件显示视图,但在显示视图之前,它应该立即切换暂停按钮的状态,但事实并非如此。

以下代码供参考:

UIButton的代码:

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];
}

有人能告诉我如何让它以这种方式工作吗?

只将一个操作附加到UIButton。调用此操作时,根据应用程序的状态执行各种任务。

您不能将许多操作附加到UIButton。

为什么不附加一个切换播放/暂停的功能,然后显示视图?

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

然后

-(void)playpauseActionAndDisplayView:(id)sender 
{
  [self playpauseAction:sender];
  [self displayviewsAction:sender];
}

在playpauseAction方法中更改了UIControlState,如下

-(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];
  }  

}

它奏效了。

最新更新