[当用户启用VoiceOver时选择UITextField中的所有文本

问题描述 投票:0回答:1

在我的应用程序中,我有几个文本字段,用户可以编辑。如果该文本字段已经包含文本,并且用户开始编辑该文本字段,那么我想突出显示所有文本,因此用户可以更轻松地删除该字段的内容。

搜索网络,我找到了将文本字段委托设置为self并使用函数didBeginEditing()的解决方案。在此函数中,我只调用textField.selectAll(nil)。只要我不在手机上使用VoiceOver,它就可以很好地工作。一旦开始在文本字段中的文本上打开VoiceOver,开始编辑文本字段时该文本就不会突出显示。虽然函数didBeginEditing仍然被调用。我用一个简单的打印语句对此进行了检查。

有人知道为什么这不起作用吗?是否有另一种方式可以突出显示文本字段中的所有文本?

谢谢您的回答!

swift uitextfield voiceover
1个回答
0
投票

当VoiceOver选择元素时,文本选择丢失。您应该在VoiceOver聚焦于元素之后选择文本。

在didBeginEditing上,您可以检查是否UIAccessibility.isVoiceOverRunning,然后在一秒钟后选择文本。

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

不是最佳解决方案,但它正在工作。另外,对于有视力障碍的人,我认为选择所有文本没有用,最终您应该通知用户已选择了文本。

© www.soinside.com 2019 - 2024. All rights reserved.