Подтип полученного события - нераспознанный селектор
Я пытаюсь определить, нажата ли кнопка "назад" или "вперед" в центре управления, но при запуске следующего кода происходит сбой if (receivedEvent.subtype == UIEventSubtypeRemoteControlNextTrack
поговорка unrecognized selector sent to instance 0x170259890
, Я не уверен, что не так и почему это не работает.
- (void)viewDidLoad {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNowPlayingItemChanged:) name:MPMusicPlayerControllerNowPlayingItemDidChangeNotification object:self.player];
[self.player beginGeneratingPlaybackNotifications];
}
-(void)handleNowPlayingItemChanged :(UIEvent *)receivedEvent {
NSLog(@"worked");
if (receivedEvent.subtype == UIEventSubtypeRemoteControlNextTrack) {
NSLog(@"next track");
}
}
1 ответ
Каждый раз, когда вы устанавливаете обработчик для уведомления, используя NSNotificationCenter
Вы должны знать, что метод, который вы предоставляете, должен быть настроен особым образом. Из документов для addObserver:selector:name:
:
Селектор, который указывает сообщение, отправленное получателем
notificationObserver
уведомить его о публикации уведомления. Метод указанnotificationSelector
должен иметь один и только один аргумент (экземплярNSNotification
).
Это означает, что ваш handlePlayingItemChanged:
метод должен быть:
- (void)handleNowPlayingItemChanged:(NSNotification *)notification {
NSLog(@"worked");
MPMusicPlayerController *player = notification.object;
// get the nowPlayingItem or any other property as needed
}