UIButton - Нажмите и удерживайте, нажмите - PullRequest
2 голосов
/ 25 октября 2009

У меня есть несколько кнопок UIB, которые управляют музыкальным проигрывателем 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 голосов
/ 26 октября 2009

Да.

После запуска моего приложения на устройстве с ОС 3.1.2 (с использованием того же кода из исходного поста), похоже, проблема устранена. Тот же код, который ищет И пропускает на устройстве 3.0, ТОЛЬКО ищет на устройстве 3.1.2.

Похоже, что в 3.0 состояние воспроизведения проигрывателя на UIControlEventTouchedUp равно воспроизведению, а не пропуску. На 3.1.2 все наоборот.

Кто-нибудь знает решение, которое не включает проверку состояния воспроизведения проигрывателя?

0 голосов
/ 25 октября 2009

Я не проверял это, и я не знаю, является ли это лучшим решением.

  • Вы можете прикрепить действие к UIControlEventTouchedDown кнопки, а затем запустить таймер примерно на 1 секунду.
  • Когда таймер срабатывает, он может вызвать метод, который начинает поиск.
  • Затем присоедините другой метод к UIControlEventTouchedUp кнопки.
    • Проверьте, ищет ли игрок
      • если он ищет, прекратите искать
      • еще, пропустить вперед.

Как это звучит?

...