Я пишу приложение для редактирования музыкального плейлиста для iPhone.
Я подписываюсь на MPMusicPlayerController
MPMusicPlayerControllerNowPlayingItemDidChangeNotification
и я
возникает проблема, когда @selector
метод для этого уведомления
вызывается более одного раза при изменении nowPlayingItem:
.
Я разделил каждый плейлист на свои MPMediaItemCollection
объекты, и когда один плейлист закончен, я загружаю следующий, вызывая -pause
на проигрывателе, передавая новый MPMediaItemCollection
на контроллер музыкального проигрывателя через его -setQueueWithItemCollection:
метод. Затем я явно устанавливаю nowPlayingItem на свой собственный элемент и, наконец, вызываю -play
.
[musicPlayer pause];
[musicPlayer setQueueWithItemCollection:[MPMediaItemCollection collectionWithItems:[selectedPrefs mediaItems]]];
musicPlayer.nowPlayingItem = [selectedPrefs.playbackItems objectAtIndex:selectedPrefs.nowPlayingIndex];
[musicPlayer play];
Когда я делаю это, @selector
вызывается дважды для изменения элемента, который сейчас воспроизводится. Я подозреваю, что это связано с тем, что -setQueueWithItemCollection:
автоматически изменяет воспроизводимый элемент, чтобы он указывал на первый элемент мультимедиа в новой коллекции, а затем я снова изменяю этот элемент перед вызовом -play
.
Большое спасибо.