Я использую эту же технику, однако замечаю следующее поведение:
На iPod touch G2:
Ползунок MPVolumeView работает и полностью реагирует на тумблер во время запуска приложения.
На iPhone Gen 1 и 3G:
Ползунок MPVolumeView не начинает изменять громкость, пока воспроизведение мультимедиа не происходит через API-интерфейсы AudioQueue, и прекратит изменять громкость при вызове AudioSessionSetActive (false). Еще более странно: если вы нажмете джойстик на iPhone при использовании API-интерфейсов AudioQueue во время воспроизведения, то ползунок MPVolumeView будет работать до конца жизни приложения.
Этот код поддерживает синхронизацию всего и помогает обеспечить синхронизацию клавишного переключателя и ползунка, но не устраняет проблемы, возникающие у меня с MPVolumeView на iPhone.
Весь мой опыт здесь под iPhone OS 3.0 с iPhone 3.0 SDK.
Надеюсь, это поможет немного сузить вашу проблему.
Моя следующая тактика состояла в том, чтобы начать что-то делать с kAudioSessionProperty_AudioRoute и попробовать альтернативные значения для kAudioSessionProperty_AudioCategory, чтобы увидеть, что происходит.
Примечание:
Спасибо всем за методы IB для создания и управления MPVolumeView. Я использовал код для его создания и размещения, и я постоянно забываю о технике, в которой вы можете установить тип UIView в IB.
Примечание 2:
Работая с MPVolumeView, я обнаружил, что если вы установите для категории аудио что-либо, кроме kAudioSessionCategory_MediaPlayback, MPVolumeView будет отображать текст «iPhone ...», когда iPhone установлен в беззвучный режим.