Объявление страницы VoiceOver неверно - PullRequest
1 голос
/ 14 июня 2019

Когда VoiceOver включен, текущая страница объявляется, когда пользователь выполняет прокрутку, проводя тремя пальцами, например: «Страница 1 из 3». Однако эти объявления не всегда верны.

Следующий код создает представление прокрутки и заполняет его тремя метками (с разными цветами фона, чтобы различать их):

let scrollView = UIScrollView()
scrollView.frame = view.bounds
view.addSubview(scrollView)

let colours: [UIColor] = [.red, .blue, .green]
var lastView: UIView?

for colour in colours {
    let label = UILabel()
    label.frame.size = scrollView.frame.size
    label.backgroundColor = colour
    label.textColor = .white
    label.text = "\(colours.firstIndex(of: colour)!)"
    label.textAlignment = .center

    scrollView.addSubview(label)

    label.frame.origin.y = lastView?.frame.maxY ?? 0

    lastView = label
}

scrollView.contentSize.height = lastView!.frame.maxY        

Когда я прокручиваю (как описано выше), делаются следующие объявления:

  • Страница 1 из 4
  • Страница 2 из 4
  • Страница 4 из 4
  • Страница 4 из 4

Что-то я не так делаю или это ошибка в iOS? Если это последний вариант, могу ли я применить обходной путь, чтобы обеспечить объявление правильных номеров страниц?

1 Ответ

0 голосов
/ 14 июня 2019

Как вы упомянули в своем комментарии, я неправильно понял вашу проблему.

Есть ли что-то, что я делаю неправильно, или это ошибка в iOS?

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

Посмотрите на отображаемую цветную метку, представленную вашим кодом ниже: enter image description here Каждый свайп не отображает метку по всей ее высоте и ширине, поэтому у вас больше страниц, чем количество меток: это определенноне ошибка, вот как это работает .

... есть ли обходной путь, который я могу применить, чтобы обеспечить объявление правильных номеров страниц?

Однако, если вы этого хотите достичь, я предлагаю взглянуть на пользовательскую прокрутку , которая может помочь (я никогда не использовал ее, но это единственная линия исследования, которую ясмотрите на вашу цель) .

Так что, к сожалению, обходного пути нет для упомянутой вами проблемы, потому что это часто происходит даже для нативных приложений iOS.

См. Самую правую страницу наваш iPhone с виджетами и слушайте объявленные номера страниц: первое объявление всегда неправильно для меня (5 страниц, а есть только 3) .

Первое объявление / чтениеиногда это неправильно, но после нескольких перелистываний тремя пальцами система исправляет свою первоначальную ошибку, как я указал на моей иллюстрации.

Это не идеальная ситуация для пользователя, но на данный момент вы можете 'лучше ничего не делать , если только не зажечь свечу для очень быстрого решения этой проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...