Touch ID 的 VoiceOver 辅助功能标签

2023-12-11

我正在努力确保我正在开发的 iOS 应用程序可以访问,并正在尝试实现 VoiceOver 来确保这一点。

我找不到任何帮助的一件奇怪的事情是何时显示 Touch ID 视图(在我的情况下是登录应用程序)。 VoiceOver 将 ID 发音为单词,而不是 I.D。

我尝试过对 NSString 和 LAContext 对象实现可访问性属性,但似乎都没有改变 VoiceOver 读出的内容。代码片段如下:

LAContext *context = [[LAContext alloc] init];
[context setIsAccessibilityElement:YES];
[context setAccessibilityLabel:@"TEST 2"];

NSError *error = nil;

NSString *label = @"Please authenticate your ID using the Touch ID";
[label setIsAccessibilityElement:YES];
[label setAccessibilityTraits:UIAccessibilityTraitStaticText];
[label setAccessibilityLabel:@"TEST"];

showingTouchID = TRUE;

if ([context canEvaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics error:&error]) {
    [context evaluatePolicy:LAPolicyDeviceOwnerAuthenticationWithBiometrics
            localizedReason:label
                      reply:^(BOOL success, NSError *error) {
......

无论有或没有具有辅助功能属性的上下文,VoiceOver 的输出始终是标签文本。

非常感谢所有帮助:)


您绝对不应该仅仅为了使 VoiceOver 正确发音而更改辅助功能标签(即不要尝试“破解”标签发音)。原因是 VoiceOver 不仅仅有语音输出;它还有盲文输出,盲人用户希望能够准确地逐个字母地阅读内容(即准确地看到所有空格、大写/小写字母等)。写“I D”而不是“ID”,那么虽然 VoiceOver 可能会正确发音(在特定版本的 iOS 中),但盲人用户在盲文显示器上阅读“I D”后可能会认为这就是它的实际书写方式比如说,当他们在与其他人的书面交流中使用这种错误的拼写时,他们就会显得不专业。

处理这个问题的正确方法(尽管没有立即提供解决方案)是:

  1. 向 Apple 提交有关特定语言中特定单词和特定语音的发音错误(例如“预期发音:[aj'di:]”与“实际发音:[id]”)
  2. 向 Apple 提交错误,请求仅自定义发音的能力(即,您将辅助功能标签保持完整且正确,但指定语音应如何发音文本的某些部分),以及可以在何处进行此自定义翻译者单独翻译字符串的每种语言(因为错误的发音是特定于语言的) - 另请参阅下一点。
  3. 如果您可以改写,请尝试使用与有问题的词不同的词(这似乎不适用于“Touch ID”这一固定术语)。但这也是一种黑客行为,因为它只解决了英文原文,并不关心翻译,而改写反而可能使发音复杂化。

关于这些坏消息我很遗憾。

最后,在这里,无论是在 iOS 8.4.1 还是 iOS 9.0.2 上,使用默认美国英语 iOS 语音的 VoiceOver,至少在此网页上,将“Touch ID”中的“ID”发音为 [ajdi:],而不是 [id]。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Touch ID 的 VoiceOver 辅助功能标签 的相关文章

  • iOS 5 UIView drawRect 覆盖在设备上不起作用

    我正在准备在 iOS 5 GM 上发布我的 iPhone 应用程序 并遇到了 UIView 的错误 当我在子类上重写 drawRect 方法时 模拟器会显示所需的结果 但当我尝试在实际设备上测试时 drawRect 重写根本没有任何效果 我
  • iOS 无法获取人物图像

    我有两个 tableViewController 第一个有联系人列表 另一张显示详细的人员信息 第一个tableViewController的一段代码 ABAddressBookRef addressBook ABAddressBookCr
  • iOS后台获取时间限制崩溃

    我已经设置了背景获取 使用大纲NSScreencast 第 92 集 http nsscreencast com episodes 92 background fetch BOOL application UIApplication app
  • UICollectionView 设置列数

    我刚刚开始学习 UICollectionViews 我想知道是否有人知道如何指定集合视图中的列数 默认设置为 3 iPhone 肖像 我查看了文档 似乎找不到简洁的答案 对于 Swift 5 和 iOS 12 3 您可以使用4 以下实现为了
  • 如何从 Xcode 4.5 卸载 iOS 5.0 模拟器

    我已经安装了 Xcode 4 5 由于我编写应用程序是为了好玩 我不打算支持旧版 iOS 版本 并且为了节省 500 GB iMac 上的空间 是否有办法删除它 尝试从 Xcode 包中支持的平台中删除 iPhone iPhoneSimul
  • 更改目录时 Gitlab CI 运行程序作业失败退出状态 1

    我正在使用我的个人机器作为使用 Fastlane 的 iOS 项目的运行程序 这主要是因为共享运行器没有为 iOS 设置 因为它们没有安装 Xcode 更改目录时我的作业立即失败 它是一个 shell 运行程序 根本没有其他自定义配置 有什
  • iPhone 的翻译器?

    我对为 iPhone 制作一个解释器很感兴趣 这将是一个实验性的想法 但可能会很棒 我喜欢让我自 己的语言适合移动计算和数学的想法 我查阅了很多资料 发现有关 iPhone 上的口译员的信息很复杂 苹果会允许什么 我见过这个应用程序 这是一
  • Apple 由于崩溃而拒绝了我的应用程序,无法重现它

    我刚刚上传了一个应用程序到应用程序商店 它是为ios 7开发的 他们拒绝了该应用程序 因为我无法重现崩溃 他们向我发送了这份崩溃报告 Exception Type EXC BAD ACCESS SIGSEGV Exception Subty
  • Bootstrap 响应式表格在 iOS 设备上无法垂直滚动

    这就是我所拥有的 div class table responsive table class table style background transparent table div 我正在使用以下 bootstrap css 文件 ht
  • 如何使用 didMoveToView 作为 initWithSize ?

    我将 Xcode 更新到版本 6 从那时起 我就无法使用以前在 Xcode 5 中使用 Objective C 编写的代码了 有一些新文件 GameScene h 和 GameScene m 以及 GameScene sks 而不是 MyS
  • 按升序对 NSDictionary 进行排序

    我正在尝试排序NSDictionary按升序排列 我正在使用这段代码 NSDictionary valDict self mGetDataDict key rowKey for NSString valueKey in valDict al
  • iOS - 在相机上放置自定义叠加层(垂直对齐)。顶部黑条的大小

    我正在寻找以下问题的编程解决方案 我想在相机 iOS 上绘制自定义叠加层 我希望它位于相机输出视图的垂直中央 我已经完成了相对于屏幕而不是相机图片居中绘制自定义视图 为此 我需要获得顶部黑条的大小 我怎么才能得到它 顶部和底部栏的大小不相等
  • 使用javascript以编程方式触发iOS safari中的复制菜单?

    我正在尝试实现一种用户友好的方式 将一些文本从文本输入字段复制到 iOS Safari 上的剪贴板 我知道无法在这个平台上以编程方式完成此操作 但我希望能够尽可能地指导用户体验 在 iOS Safari 上 当用户手动突出显示某些文本时 会
  • UITableViewCell 内嵌套 UIStackView 内的 UILabel 有时会被截断

    我的一个表设置中有一个表视图单元格 其中包含以下视图层次结构 外部水平 stackview 固定到单元格内容视图的尾部 前部 底部和顶部边缘 右侧标签固定到其父 stackViewHackView 的尾部 前部 底部和顶部边缘 在我的控制器
  • 如何将设备上未保存的图片上传到dropbox帐户?(IOS)

    Dropbox RestClient 仅保存文件 所以我想先将图像保存在本地文件夹中 然后上传它 结果它保存了文件 但它已损坏 NSString localPath NSBundle mainBundle pathForResource I
  • 如何将nsmutable数组添加到sqlite数据库表中

    如何将nsmutablearray添加到sqlite数据库表中 有人可以帮我编码吗 您可以使用 for int i 0 i lt mutArray count i NSString string mutArray objectAtIndex
  • 将 NSFetchedResultsController 添加到项目后出现问题

    我设置 CoreData 时没有NSFetchedResultsController一切都保存得很好 切换到之后NSFetchedResultsController 我在尝试保存图像时遇到奇怪的错误 这是我用来保存图像的代码 void sa
  • iOS 搜索栏不显示结果

    更新 这实际上有效 我的自定义单元格的样式尚未出现 因此单元格看起来是空白的 那我怎样才能得到searchResultsTableView使用我的自定义单元格 我在表格视图中实现了搜索栏 当我调试时搜索 过滤所有工作 但是当我在搜索栏中输入
  • dispatch_semaphore_t 重用 - 我在这里缺少什么?

    我有一些代码 其中使用dispatch semaphore t 来表示操作完成 当信号量是成员变量时 它的行为似乎不正确 我将展示有效的示例代码和似乎无效的示例代码 implementation someClass dispatch sem
  • 隐藏 UITableview 单元格

    我正在尝试从 UITableView 中隐藏单元格 就像删除操作一样 但我只想隐藏它以便稍后在相同位置显示它 我知道 UITableViewCell 有一个名为 隐藏 的属性 但是当我使用此属性隐藏单元格时 它会隐藏但没有动画 并且会留下空

随机推荐

  • 析构函数调用的顺序是否有原因?

    正如我在某些论坛上读到的那样 当创建派生类对象时 基类成员和方法会在内存中分配空间 但没有特定的基类对象 现在 当派生类对象超出范围时 为什么首先调用派生类析构函数 编译器的约束是什么 不能在基类析构函数之后调用派生类析构函数 如果我有错误
  • 使用 pascal (innosetup) 获取文件的最后更新时间

    在 innosetup 脚本的卸载部分中 我想添加一个检查来查看特定文件的上次更新日期时间是否发生在最近 10 分钟内 有谁知道 innosetup 兼容的 pascal 代码吗 您可以使用Windows API函数GetFileAttri
  • 如何在 Tkinter 中更新此文本框的文本?

    所以我正在用 tkinter 在 python 中制作秒表 我有用于更新工作时间的循环 但我有它 因此循环会清除文本框 然后用新数字更新文本框 虽然它不起作用 但由于某种原因它只是没有清除它 它只是不断地向框中添加数字 这是我使用过的代码
  • Java 强制转换为超类并调用重载方法

    abstract class A int met A a return 0 int met B b return 1 int met C c return 2 class B extends A int met A a return 3 i
  • 如何对 UITextField 设置字符限制

    我想对 UITextField 设置字符限制 但不知道如何操作 我希望它最多包含 16 个字符 我该怎么做呢 BOOL textField UITextField textField shouldChangeCharactersInRang
  • “复制本地”和项目参考的最佳实践是什么?

    我有一个很大的 C 解决方案文件 100 个项目 并且我正在尝试缩短构建时间 我认为 复制本地 在很多情况下对我们来说都是浪费 但我想知道最佳实践 在我们的 sln 中 应用程序 A 依赖于程序集 B 而程序集 B 又依赖于程序集 C 在我
  • Ruby:如何处理带有“坏逗号”的 CSV 文件?

    我需要处理来自 FedEx com 的包含运输历史记录的 CSV 文件 不幸的是 FedEx 似乎并没有实际测试其 CSV 文件 因为它没有引用其中包含逗号的字符串 例如 公司名称可能是 Dog Widgets Inc 但 CSV 不引用该
  • C语言中删除给定字符串前面的空格和制表符

    什么 C 函数 如果有 可以从字符串中删除所有前面的空格和制表符 在C中 字符串由指针标识 例如char str 或者可能是一个数组 无论哪种方式 我们都可以声明自己的指针 该指针将指向字符串的开头 char c str 然后我们可以让指针
  • 如果使用授权承载令牌,则 400 错误请求

    我正在使用 PostMan 来解决我的 Angular NodeJS 应用程序中的奇怪 400 错误 我正在尝试获取https example com login html并且请求有两个标头 Authorization Bearer eyJ
  • 如何从排队作业中检索构建参数?

    我想编写一个系统常规脚本 它检查 Jenkins 中排队的作业 并提取在安排作业时提供的构建参数 以及构建原因作为奖励 有想法吗 具体来说 def q Jenkins instance queue q items each println
  • jQuery:高度()/宽度()和“显示:无”

    我一直认为有的元素display noneCSS 样式返回 0height and width 但在这个例子中 HTML div style display none a div CSS alert target height 他们不 ht
  • 如何让 boost json 使用正确的数据类型

    When I put value使用 int 它被写为字符串 有谁知道如何让它作为 int 打印 include
  • Google Apps 脚本:如何在 google 文档中查找 listItem 对象并向其插入项目?

    继文档样本 我正在尝试创建一个函数来搜索 Google 文档中的编号列表 如果找到它 则将一个新项目添加到该列表中 但我收到这个错误 Cannot find method setListId string line 21 file test
  • R中的邻近空间过滤

    我有一个物种的出现点 并且我想消除潜在的采样偏差 其中某些区域的点密度可能比其他区域大得多 实现此目的的一种方法是最大化彼此之间不小于特定距离 X 的点的子集 本质上 我会防止点彼此太接近 是否有任何现有的 R 函数可以执行此操作 我搜索了
  • 如何在 HTML5 上淡入/淡出音频

    我正在创建一个简单的背景音乐 它只有一个按钮来播放和停止音乐 但我想为其添加淡入淡出 但不起作用 My code var beepTwo musicBeat 0 beepTwo play dan click function if beep
  • 使用 CSS 更改 DOM 元素顺序(Crocodoc)[重复]

    这个问题在这里已经有答案了 是否可以使用 CSS 更改 DOM 元素顺序 我有一个 iframe 我想在其中更改工具栏above to belowiframe 的主要内容 所以由此可知 div div div div div div To
  • 如何将 #define 字符串文字转换为宽字符串文字? [复制]

    这个问题在这里已经有答案了 可能的重复 如何使用 C 预处理器将连接字符串转换为宽字符 我有一个使用 define 定义的字符串文字 define B 1234 0 如何使用这个定义在编译时获取这个宽字符串文字 L 1234 0 只是 de
  • 正则表达式 - 是否可以找到重叠的组?

    我是正则表达式的新手 只是想知道是否可以在匹配中找到 重叠 组 假设以下字符串 20122 0029431 7094 0111 5890 我现在想要所有匹配项 4 个数字 空格 数字 空格 4 个数字 我尝试的是这样的 0 9 4 s 0
  • 如何在 Scala 中将列表分组为元组分组项?

    例如我如何转换 val list 1 to 10 toList into List 1 2 3 4 5 6 7 8 9 10 您可以使用groupedList类的方法 http www scala lang org api current
  • Touch ID 的 VoiceOver 辅助功能标签

    我正在努力确保我正在开发的 iOS 应用程序可以访问 并正在尝试实现 VoiceOver 来确保这一点 我找不到任何帮助的一件奇怪的事情是何时显示 Touch ID 视图 在我的情况下是登录应用程序 VoiceOver 将 ID 发音为单词