Как привязать VoiceOver к слайдеру MPVolumeView?

Я создал ползунок MPVolumeView в Interface Builder для регулировки громкости звука (код ниже):

import UIKit
import MediaPlayer

class StreamVolumeTableViewCell: AudioStreamTableViewCell {
    static let identifier = "StreamVolumeTableViewCell"


    override func awakeFromNib() {
        super.awakeFromNib()

        self.volumeSlider.setRouteButtonImage(UIImage(named: "black_route_button"), for: .normal)
        self.volumeSlider.showsRouteButton = false
    }

    @IBOutlet var volumeSlider: MPVolumeView!

}

Теперь я хочу сделать его доступным и добавить VoiceOver.

Я включил специальные возможности на ползунке, установил его метку («Громкость звука») и установил черты «Взаимодействие пользователя включено», «Регулируемый» и «Разрешает прямое взаимодействие». Когда я включаю Voiceover, он произносит метку и подсказку по умолчанию, НО --- когда я прокручиваю вверх и вниз, значение ползунка громкости не меняется, и я получаю звук ошибки "буп".

Как мне выполнить то, что я после?

Спасибо!!!


person Manelion    schedule 21.02.2018    source источник


Ответы (1)


Сначала я создал свой ползунок громкости, сначала вставив UIView в свой интерфейс с помощью IB и переименовав класс в «MPVolumeView». Прочитав здесь, я заподозрил, что именно поэтому Voiceover не получает ни одного из моих щелчков на ползунке, созданном в UIView.

Я удалил UIView и заменил его на UISlider в IB и переименовал ЭТОТ класс в «MPVolumeView». Теперь VoiceOver отвечает, как и ожидалось, заставляя все мои пальцы менять значение ползунка, а громкость на моем устройстве меняется.

person Manelion    schedule 27.02.2018
comment
Спасибо за это! Мне пришлось отредактировать customClass в раскадровке XML, но он прекрасно работает. Также помогает правильно расположить вещи в Interface Builder, потому что вы можете видеть ползунок. - person chockenberry; 04.04.2019