2

我有几个 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];
}

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

谢谢。

4

2 回答 2

0

I haven't tested this, and I don't know if it's the best solution.

  • You could attach an action to the button's UIControlEventTouchedDown, and then trigger a timer for about 1 sec.
  • When the timer fires, it could call a method that begins seeking.
  • Then attach another method to the button's UIControlEventTouchedUp.
    • Check if the player is seeking
      • if it is seeking, stop seeking
      • else, skip forward.

How does that sound?

于 2009-10-25T20:18:25.270 回答
0

嗯。

在具有 OS 3.1.2 的设备上运行我的应用程序(使用与原始帖子相同的代码)后,问题似乎已解决。在 3.0 设备上搜索和跳过的相同代码仅在 3.1.2 设备上搜索。

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

有谁知道不涉及检查播放器播放状态的解决方案?

于 2009-10-25T21:29:10.590 回答