2015-05-07 1 views
4

В настоящее время я испытываю либо ошибку, либо непонимание документации Apple.iOS 8.x Swift MPRemoteCommandCenter - Отключение элементов управления воспроизведением звука

Некоторые фоне. Я использую AVPlayer для запуска воспроизведения звука. Я использую AVPlayer, потому что он обеспечивает более точный контроль над позиционированием воспроизведения (падение на определенные точки песни).

Когда я реализую код ниже, в MPRemoteCommandCenter отображается только одна кнопка (кнопка воспроизведения/паузы), а все остальные кнопки (назад и вперед) отсутствуют.

MPRemoteCommandCenter.sharedCommandCenter().playCommand.addTarget(self, action: "remoteCommandMute") 
    MPRemoteCommandCenter.sharedCommandCenter().pauseCommand.addTarget(self, action: "remoteCommandMute") 

Я могу затем переключить, отключен ли он или нет. Согласно документации Apple, вы должны иметь возможность переключать включенное свойство, и оно должно полностью скрывать кнопки, не добавляя к ним цель (по крайней мере, из моего понимания). Вот ссылка на documentation

Если я не добавлю код .addTarget к любой из кнопок и просто следуйте инструкциям из apple, чтобы отключить указанные кнопки, это не сработает.

MPRemoteCommandCenter.sharedCommandCenter().previousTrackCommand.enabled = false 
    MPRemoteCommandCenter.sharedCommandCenter().nextTrackCommand.enabled = false 
    MPRemoteCommandCenter.sharedCommandCenter().playCommand.enabled = false 
    MPRemoteCommandCenter.sharedCommandCenter().pauseCommand.enabled = false 

На основе такого поведения, я бы ожидать, что отключение все три кнопки, в свою очередь делает их скрытыми, однако это не поведение вообще на самом деле их отключение не оказывает никакого влияния на них. Вы все равно можете их нажимать, и они ведут себя так, как будто этот код вообще отсутствует. Однако, если (как указано выше) я добавляю .addTarget к кнопке, он станет отключенным, если я установил флаг .enabled в false.

Пожалуйста, исправьте мою логику/понимание, если это не намеренное поведение, но, на мой взгляд, это абсолютно обратное мышление со стороны Apple. Если мое приложение не поддерживает приостановку функций вперед или назад, кнопка не должна появляться вообще, и ее отключение не должно просто превращать ее в серый цвет (как в настоящее время). Это также не должно волшебным образом скрыть кнопки, если вы не добавите к ним цель.

На стороне заметки, когда я добавляю цель на кнопки, они работают нормально, даже если я не хочу, чтобы мое приложение имело возможности вперед и назад.

+0

Итак, после экспериментов с различными типами и действиями кнопок, кажется, что формулировка в документации может быть лучше. Чтобы «отключить и спрятать» кнопку, нужно просто добавить цель к нужной кнопке. Например, напримерCommand.addTarget отключает предыдущие кнопки паузы/воспроизведения и пересылки и скрывает их. Однако, если я установил playCommand.enabled в false, он отобразит указанную кнопку как greyed out. – user1171911

ответ

3

Итак, после экспериментов с различными типами и действиями кнопок, кажется, что формулировка в документации может быть лучше. Чтобы «отключить и спрятать» кнопку, нужно просто добавить цель к нужной кнопке. Например, напримерCommand.addTarget отключает предыдущие кнопки паузы/воспроизведения и пересылки и скрывает их. Однако, если я установил playCommand.enabled в false, он отобразит указанную кнопку как greyed out.