Подтип полученного события - нераспознанный селектор

Я пытаюсь определить, нажата ли кнопка "назад" или "вперед" в центре управления, но при запуске следующего кода происходит сбой 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
}
Другие вопросы по тегам