在我的 iOS 应用程序中,我有一个 UITableView。它包含一些 UITableViewCellsisAccessibilityElement = true和一些isAccessibilityElement = false. (后者是仅包含分隔线的单元格;我不希望 VoiceOver 读取这些单元格。)
= false如果表格可见区域底部有一个不可访问的单元格 ( ),那么我无法“滑过”它来访问该单元格之外的可访问的表格单元格。相反,向右滑动会将辅助功能焦点从可见的表格单元格移动到其他一些可见的 UI 元素。同样,如果表格可见区域顶部有一个不可访问的单元格,那么我无法向左“滑过”它来访问其上方的可访问单元格。
我希望能够向左和向右滑动浏览表格中所有可访问的单元格,并让它们在获得焦点时滚动到视图中。我尝试覆盖accessibilityElementDidBecomeFocused,希望然后使用scrollToItem,但看起来它永远不会获得焦点,所以它永远不会被调用。
有什么方法可以让 iOS 依次将焦点发送到每个可访问的表格元素,无论它当前是否在视图中?或者是否有一些准则规定可访问性应该只处理当前可见的 UI 元素?
我有一个 UIImageView 作为视图的背景。用户交互被禁用。isAccessibilityElement 设置为 NO。当应用程序在设备上运行时,可以使用调试视图层次结构来验证这一点。
然而,当我点击以该背景为背景的视图时,会描述其上的所有控件,然后使用自动图像识别来描述图像。我在网上找到的所有内容都说这是 iOS 14 的一项新功能,而且非常棒,但没有提到如何关闭它。
我什至尝试设置自己的描述字符串,至少尝试覆盖图像识别,但无济于事。那么 - 有没有办法为特定的 UIImageView(甚至整个应用程序)关闭它,如果可以,如何关闭?
*** 更新 ****
所以我已经确认这是特定于 iOS 14 的。我有以下代码viewDidLoad:
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"blueSky.jpg"]];
imageView.isAccessibilityElement = YES;
imageView.accessibilityLabel = @"I am not a description";
CGPoint origin = imageView.frame.origin;
origin.y = 50;
origin.x = 50;
CGRect imageFrame = imageView.frame;
imageFrame.origin = origin;
imageView.frame = imageFrame;
self.view.isAccessibilityElement = NO;
[self.view addSubview:imageView];
Run Code Online (Sandbox Code Playgroud)
blueSky 是蓝天的图像。它不使用资产目录。当我在 iOS 13 中启用 VoiceOver 的情况下点击图像时,它会显示“我不是描述”。当我在 iOS 14.1 设备上点击它时,它会显示“我不是描述”,然后停顿半秒,说“图像”,然后继续描述它“蓝天,多云”。这是我一生都无法弄清楚如何消除的最后一部分!
我们有以下(简化的)HTML:(
真正的 HTML 稍微复杂一些,但listitem元素与下面的代码片段中所示完全相同。)
<div role="list">
<div role="listitem">Foo</div>
<div role="listitem">Bar</div>
<div role="listitem">Baz</div>
</div>
Run Code Online (Sandbox Code Playgroud)
当用户向下浏览列表时,VoiceOver 会宣布:
在 macOS 10.14(莫哈韦沙漠)上:
Foo,组
Bar,组
Baz,组
在 macOS 10.15 (Catalina) 上:
Foo,空组
Bar,空组
Baz,空组
两个 macOS 上的 VoiceOver 配置似乎相同,那么为什么 VoiceOver 对于相同的标记会说不同的内容呢? (这个GitHub 问题似乎描述了类似的情况。)
对于 SwiftUI Image 元素,配音模板似乎是“辅助功能标签 - 图像 - 图像名称”,例如
var body: some View {
Image(systemName: "equal")
.accessibilityLabel("my label")
}
Run Code Online (Sandbox Code Playgroud)
我收到画外音响应“我的标签图像相等”。
画外音是否可以只说“我的标签”,而不发音“图像相等”部分?
关于可访问性,我想使自定义键盘的性能类似于iOS软件键盘。当按下按钮将一个字母添加到UITextField时,VoiceOver应该在“添加的字符音”中说出该字母。当按下按钮从UITextField中删除字母时,VoiceOver应该以“已删除的字符音”说出该字母。
这是我尝试的:
[[self textField] insertText:@"a"];。[[self textField] deleteBackward];。我也尝试过同样的事情,将按钮移到设置为textField的inputView的UIView中。
字符已正确添加到文本字段中或从文本字段中删除,但是VoiceOver不会说这些字符。我该如何进行这项工作?
编辑:
硬件键盘可以正确地说。只是自定义软件键盘无法正常显示。
有没有办法在iOS应用程序上获得VoiceOver语音的当前速度?有时我使用自己的AVSpeechUtterance字符串,我想使用与VoiceOver设置相同的速率.提前致谢.
现在,我的应用程序实现AVSpeechSynthesizer了读取每个屏幕的说明.该应用还会在启用Voiceover辅助功能时考虑.
我现在面临的问题是文本到语音功能与配音功能重叠.是否有解决方案来检测当用户导航到屏幕上的另一个元素时,TTS停止说话,或者当TTS说话时,画外音不会说话直到TTS结束(尽管前者是优选的).
目前的开发是在iOS 8上,使用Swift.
我目前正在研究项目的可访问性,这里是放入自定义UITableViewCell的UICollectionView.此CollectionView具有数十个单元格,这些单元格以多行而不是一行排列.
它引发了一个问题,当你打开voiceOver并通过向左或向右滑动在collectionViewCells之间移动焦点时,系统认为你在tableViewCells之间滑动,因为collectionView在tableView中,而tableView的contentOffSet将根据tableViewCell大小,而不是collectionViewCell大小.
CollectionView已经放在tableView中了,我认为我不能改变它.所以只是想知道以前有没有人遇到过这个案例,无论如何都要使collectionView正常访问?
我正在做一些屏幕阅读器可用性测试,我想知道是否有人可以向我解释为什么屏幕阅读器到达某个<span />元素时会停止。
例:
<h1><span class="style1">Today</span> is a wonderful <span class="style2">day</span></h1>
Run Code Online (Sandbox Code Playgroud)
屏幕阅读器将阅读“今天”,然后停止阅读而不是阅读<h1 />全文。
注意:我使用的是iPad上“设置”>“常规”>“辅助功能”菜单中的旁白。
在TableViewCell,我有自定义imageview作为单选按钮.此imageview有两种状态
默认情况下,我已将"辅助功能"标签指定为"选中的复选框"和"复选框".现在我想在选择时将语音文本称为"新项目选择",并在取消选择时将"项目取消选择".
我们能给出所有四种不同的标签吗?我怎么能得到相同的.
更新:我尝试过使用
UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification,@"text")
Run Code Online (Sandbox Code Playgroud)
但它会跳过需要说话的文字.
voiceover ×10
ios ×6
swift ×2
uitableview ×2
html ×1
ios8 ×1
swiftui ×1
tableview ×1
uiimageview ×1
uitextfield ×1
wai-aria ×1