Voice over会NSStrings像这样读取以下内容
14:15"十四点十五分."
这显然是一个时间
14:00"十四."
这是模棱两可的.
如果时间14:00显示在状态栏中,则会将其正确读取为
"一万四小时"
我如何以本地化的方式实现这一目标?
以下是我的代码:
<form>
<div class="form-group loginFormGrp">
<label class="caption">Backup Cloud</label>
<div class="custSelect loginSelect">
<label class="caption">Server URL</label>
<input type="text" aria-label="Server URL" name="serverUrl" class="form-control" placeholder="example.server.com" value="">
</div>
<div class="form-group loginFormGrp">
<label class="caption">Email</label>
<input type="text" aria-label="Email" name="email" class="form-control" placeholder="user@example.com" value="">
</div>
<div class="loginBtnRow">
<button tabindex="0" type="submit" class="lgBtn btn btn-primary btn-block">Continue</button>
</div>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
每当画外文突出显示输入文本字段时,它会显示"您当前正在文本字段中,在Web内容中.要在此字段中输入文本,请键入.要退出Web区域,...",当我开始键入时,它什么也没说.并检查其他appilcation或网站,它读取我正在键入的内容.但在我的情况下,它不读.如果有人知道解决方案,请帮忙.
有什么方法可以在不破坏屏幕阅读器解释表格其余部分的情况下以可访问的方式隐藏表格标题吗?隐藏<caption>与通常推荐样式隐藏元素在视觉上打破了VoiceOver的行为,使其通过读取线性使用“下一个”按键时跳过最后一行在表中。(可以通过显式向下导航列来强制 VoiceOver 进入最后一行,但这需要用户知道这样做。)
我认识到这可能是 VoiceOver 本身的一个错误,但如果有一个干净的解决方法,那将是理想的,因为 WCAG 需要实际可用的辅助技术的可访问性。
这是一个极简示例来演示:
更新:下面的样式规则是 Magento 框架中使用的标准规则,用于在视觉上隐藏元素,同时让屏幕阅读器可以访问它们。导致 VoiceOver 行为的关键规则是position: absolute; 但是,如果简单地将其删除,则布局流程会受到影响。
caption {
border: 0;
clip: rect(0, 0, 0, 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px;
}Run Code Online (Sandbox Code Playgroud)
<table>
<caption>Table of Fruits</caption>
<thead>
<tr>
<th>Fruit</th>
<th>Color</th>
</tr>
</thead>
<tbody>
<tr>
<td>Apple</td>
<td>Red</td>
</tr>
<tr>
<td>Pear</td>
<td>Green</td>
</tr>
</tbody>
</table>
<p>Voiceover will jump straight from "Red" in prior table to this paragraph, skipping the last row.</p>Run Code Online (Sandbox Code Playgroud)
我在我的应用程序中使用UIPageViewController,但是我注意到启用Voice Over时,"三指滑动"快捷方式不起作用(就像在主屏幕上一样).有没有人知道是否有一种标准的方法来实现这一点(像大多数其他VO功能一样)?或者我是否需要自己手动检测滑动手势.
使用辅助功能
虽然VoiceOver按顺序读取应用程序中的元素,但无论如何都要将焦点转移到元素之间?我尝试使用"nextResponder",但它无法正常工作.
所以我有一个UICollectionView,其中包含一组使用自定义UILayout显示的UICollectionViewCells.
我已经将UILayout配置为布局所有UICollectionViewCells几乎与它们在ios上的照片应用程序中的布局方式完全相同.
问题是,当打开语音时,用户正在使用滑动遍历UICollectionViewCells,当用户到达页面上的最后一个可见单元格并尝试向前滑动到下一个单元格时,它就会停止.
我知道在UITableView中,单元格将继续向前移动,表格视图将自动向下滚动.
有谁知道如何获得这种行为?
我是Mac和iOS编程的新手,最近决定真正认真地开发两种平台的应用程序.我采取的第一步是注册Mac和iOS开发人员程序,下载Xcode并学习一本关于Objective-C的书.我花了6周的时间熟悉Objective-C,它的语法,概念和Foundation框架,并且纯粹是为了这些目的开发命令行应用程序.
现在,下一步似乎是Cocoa和开发提供图形用户界面的应用程序,我现在正在研究.现在,这是我遇到的一个问题:由于我完全失明,我无法直观地看到屏幕.因此,我使用VoiceOver,OS X和iOS内置的屏幕阅读器.也许有些开发者在某些时候听说过VoiceOver,因为Apple已经指定了与VoiceOver有关的各种可访问性指南.在这方面,非常感谢所有遵守这些指导方针的人,非常感谢您的努力!:-)
对于Xcode,它实际上与VoiceOver(VO)非常有效.添加新的UI元素也没什么大不了的,我可以从库中复制它们并将它们粘贴到视图中.但是,我不能拖累它们并以吸引人的方式设置它们,或者至少我还没有找到任何方法来实现它,因为我刚刚开始!
现在,我真的想知道是否有任何"文本"方式来安排UI元素.我知道检查员有很多种选择,但是我不确定他们是否会让我说手动更改UI元素的坐标.此外,我已经阅读了有助于创建一致布局的新约束,但此时我并不熟悉如何使用它们或者它们在我的情况下是否有用.
此外,我确实认识到,生成一个100%吸引有目标的最终用户的界面对我来说可能是不可能的,因为我很难决定颜色选择或设计徽标.因此,我可能需要雇用某人来做这些事情.但是,如果我可以粗略地指定布局,那对我来说已经很有帮助了!
感谢您的任何想法/建议:-)
知更鸟
在日历中,当您创建新事件时,如果您点击启用了VoiceOver的全天单元格,Siri会说"全天开关按钮打开/关闭,双击以更改设置".实际上,双击将切换开关.此外,不可能只关闭切换开关本身 - 您必须与单元本身交互以切换开关,交换机本身不是可访问的元素.
在我的应用程序中,我使用标签和开关完全相同的设置.但是当我在启用VoiceOver时点击单元格时,它只读取标签,因此盲人用户不知道该单元格中有一个切换开关.如果他们点击开关本身然后他们可以与它交互,所以它与日历应用程序中的设置相反.
如何获得Apple实施的相同行为?我需要一些方法将开关组合到单元格中,以便VoiceOver在突出显示单元格时读取它们,然后当它们双击它时应该切换开关,我不确定如何完成设置.谢谢!
带有垂直滚动内容的HTML固定页脚(我希望标准的东西,溢出:自动等).
当VoiceOver焦点击中可见视图底部的元素时,通过右滑动VoiceOver手势垂直滚动元素时,VoiceOver焦点会正确地移动元素但滚动条仅滚动元素高度的一半,因此VoiceOver焦点移动到可见光下方区域.
编辑更新的片段,在前一个容器高度小于50%,为了清晰而更新,以显示高度无关紧要.
提前致谢.
.scrollContainer {
position: absolute;
overflow: auto;
top: 0;
width: 100%;
bottom: 100px;
}
.rightData {
float: right;
padding-right: 10px;
}
.stepData {
padding: 0px;
list-style-type: none;
margin-top: 0;
margin-bottom: 0;
}
.stepData > li {
height: 42px;
border-top: 1px solid black;
padding: 12px 20px;
font-size: 1.25em;
}
#footer {
position: absolute;
height: 100px;
width: 100%;
bottom: 0;
background-color: cyan;
}Run Code Online (Sandbox Code Playgroud)
<div style="height:500px;">
<div id="container" class="scrollContainer">
<ul class="stepData" style="padding:0px;">
<li role="button" aria-label="date">06/01<span class="rightData" aria-label="steps">1001</span></li>
<li role="button" …Run Code Online (Sandbox Code Playgroud)iOS9,启用了VoiceOver的Safari.
不是100%可重复,但只是选择一个选项将使VoiceOver焦点跳转到页面顶部的按钮.
现在可以监听被选中的选项,然后在几秒钟内强制关注元素,但这会导致不受欢迎的UX.
:focus {
background-color: pink;
}Run Code Online (Sandbox Code Playgroud)
<div>
<button tabindex="-1">close</button><br/><br/><br/><br/><br/><br/><br/><br/>
<select>
<option>Email</option>
<option>Tobias</option>
<option>Linus</option>
</select>
</div>
<p>This example shows how to fill a dropdown list</p>Run Code Online (Sandbox Code Playgroud)
在生产代码(使用AngularJS)中,在2秒超时后明确设置焦点,修复了问题,但这并不理想!谢谢.
voiceover ×10
ios ×5
html ×4
iphone ×2
cocoa-touch ×1
css ×1
electron ×1
focus ×1
html5 ×1
interface ×1
javascript ×1
objective-c ×1
uiswitch ×1
uitableview ×1
xcode ×1