2

iPhoneの音楽プレーヤーを制御するUIButtonがいくつかあります。

前のボタンを押し続けた場合は音楽プレーヤーを後方にシークさせたいのですが、ボタンをシングルタップした場合は前の項目にスキップします。

現在、タップするだけで前の項目にスキップできますが、長押しすると後方にシークし、ボタンを押すと前の項目にスキップします。

現在使用しているコードは次のとおりです。

- (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

私はこれをテストしていません、そしてそれが最良の解決策であるかどうかわかりません。

  • ボタンのUIControlEventTouchedDownにアクションをアタッチしてから、約1秒間タイマーをトリガーできます。
  • タイマーが起動すると、シークを開始するメソッドを呼び出すことができます。
  • 次に、ボタンのUIControlEventTouchedUpに別のメソッドをアタッチします。
    • プレイヤーが探しているかどうかを確認します
      • 求めている場合は、求めるのをやめます
      • それ以外の場合は、先にスキップします。

それはどのように聞こえますか?

于 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 に答える