Выделение всего текста в UITextField, когда для пользователя включена функция VoiceOver - PullRequest
0 голосов
/ 29 марта 2020

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

Поиск в Интернете Я нашел решение установить текстовые поля делегировать себя и использовать функцию didBeginEditing (). В этой функции я просто вызываю textField.selectAll (nil). Пока я не использую VoiceOver на телефоне, это работает хорошо. Как только вы включаете VoiceOver для текста в textField, он не выделяется при начале редактирования текстового поля. Функция didBeginEditing все еще вызывается. Я проверил это с помощью простого оператора печати. ​​

Кто-нибудь знает, почему это не работает? Есть ли другой способ выделить весь текст в текстовом поле?

Спасибо за каждый ответ!

1 Ответ

0 голосов
/ 06 апреля 2020

Выбор текста теряется, когда VoiceOver выбирает элемент. Вы должны выделить текст после фокусировки VoiceOver на элементе.

На didBeginEditing вы можете проверить, если UIAccessibility.isVoiceOverRunning, а затем вы выделите текст через одну секунду.

DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 1) { self.textField.selectAll(nil) }

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

...