UIButton - 触摸并按住,点击

时间:2009-10-25 20:06:56

标签: iphone uibutton media-player

我有几个UIButtons可以控制iPhone的音乐播放器。

如果触摸并按住上一个按钮,我希望音乐播放器向后搜索,但如果单击该按钮,则跳到上一个项目。

目前,我可以通过点击跳到上一个项目,但触摸并按住将向后搜索并在按下按钮后跳到上一个项目。

以下是我目前使用的代码:

- (void)previousButtonTouchedDown {
 [self performSelector:@selector(seekBackwards) withObject:nil afterDelay:1];
}

- (void)previousButtonTouchedUpInside { 
 MPMusicPlaybackState playbackState = self.iPodPlayer.playbackState;

 if (playbackState == MPMusicPlaybackStateSeekingBackward) {
  [self.iPodPlayer endSeeking];
 } else {
  [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(seekBackwards) object:nil];
  [self.iPodPlayer skipToPreviousItem];
 }
}

- (void)seekBackwards {
 [self.iPodPlayer beginSeekingBackward];
}

如果触摸,按住,然后触摸按钮,我如何向前搜索,但不能跳到上一项?

感谢。

2 个答案:

答案 0 :(得分:0)

我没有对此进行测试,我不知道这是否是最佳解决方案。

  • 您可以将操作附加到按钮的UIControlEventTouchedDown,然后触发计时器约1秒。
  • 当计时器触发时,它可以调用一个开始寻找的方法。
  • 然后将另一个方法附加到按钮的UIControlEventTouchedUp。
    • 检查玩家是否正在寻找
      • 如果正在寻求,请停止寻找
      • 其他,跳过前进。

听起来怎么样?

答案 1 :(得分:0)

在使用OS 3.1.2的设备上运行我的应用程序(使用原始帖子中的相同代码)后,问题似乎已得到解决。在3.0设备上寻找AND跳过的相同代码仅在3.1.2设备上寻找。

所以看起来在3.0上,玩家在UIControlEventTouchedUp上的播放状态等于播放,而不是跳过。在3.1.2上,情况正好相反。

有没有人知道一个不涉及检查播放器播放状态的解决方案?