我有一个包含“\xc2\xa324 pm”的 UITextField,但我希望画外音说“\xc2\xa324 每月”。通过设置:
\n\n[textView setAccessibilityLabel:@"\xc2\xa324 per month"];\nRun Code Online (Sandbox Code Playgroud)\n\nVoiceOver 读出“\xc2\xa324 每月 \xc2\xa324 下午”。
\n\n如何阻止 UITextField 中的消息被读出?
\n我创建并测试了一个包含对屏幕阅读器的完全支持的网页。它与 Mac 版 VoiceOver 配合使用效果很好,但当我尝试 iOS 版 VoiceOver 时,我发现了一个问题。当我双击触发链接时,click不会调用事件侦听器。相反,VO 只是重复aria-label我给出的内容,之后不会宣布“按钮”。当我禁用 VoiceOver 时,只需点击它即可。该链接的作用类似于按钮,而不是导航到另一个网页。这是 VoiceOver 错误还是我的标记或代码有问题?
document.addEventListener('DOMContentLoaded', function() {
document.getElementById('link').addEventListener('click', triggerFunction);
});
function triggerFunction() {
alert('testing');
}Run Code Online (Sandbox Code Playgroud)
<a id="link" href="javascript:void(0);" role="button" aria-label="My Trigger">Trigger Function</a>Run Code Online (Sandbox Code Playgroud)
我正在创建一个类似于“邮件”(或“消息”或“便笺”)的应用程序,它显示UITableViewCell包含消息预览的 s。文本通常无法全部放入 中UILabel,因此文本会被截断并自动显示省略号。这在我的应用程序中对于视力正常的用户来说效果很好,但是当使用 VoiceOver 时,会大声朗读整个text内容。UILabel这在邮件中不会发生 - VoiceOver 在到达省略号时停止播报文本。
如何在我的应用程序中获得与 Mail 相同的行为 - 强制 VoiceOver 在到达省略号时停止播报文本?
cell.messagePreviewLabel.text = a_potentially_really_long_string_here
我想知道用户何时将焦点从辅助功能元素上移开。我尝试过重写accessibilityElementDidLoseFocus()和accessibilityElementDidBecomeFocused()方法,但当我在 VoiceOver 辅助功能模式下导航到其他元素时,似乎没有调用这些方法。我不知道出了什么问题。我还应该做些什么来激活这些方法吗?
override func accessibilityElementDidBecomeFocused() {
println("become focused")
}
override func accessibilityElementDidLoseFocus() {
println("lose focus")
}
Run Code Online (Sandbox Code Playgroud)
目前的开发是在 iOS 8.1 上,使用 Swift。
我有一个 UITableView,其中每个 UITableViewCell 有 2 个 UILabels:1 个标题和 1 个内容。标头的 AccessibilityTrait 设置为“标头”。使用 Accessibility Inspector 检查模拟器屏幕时,我能够正确地看到特征集。但是在实际设备上,当我将转子切换到“标题”时,它只找到导航栏标题,而在 UITableViewCells 中找不到标题。
我有UITextView两个不同的超链接。为了让 VoiceOver 打开时有机会在两个链接之间进行选择,我做了:
class MyTextView {
override func awakeFromNib() {
super.awakeFromNib()
let str = "xxxxxx Option 1 yyyy Option 2"
let attrStr = NSMutableAttributedString(str)
let rangeOption1 = (str as NSString).range(of: "Option 1")
let rangeOption2 = (str as NSString).range(of: "Option 2")
attrStr.addAttributes([.link: "option1", range: rangeOption1])
attrStr.addAttributes([.link: "option2", range: rangeOption2])
self.attributedText = attrStr
}
override var isAccessibilityElement: Bool {
get { return true }
set {}
}
override var accessibilityLabel: String? {
get { return "Link Options" }
set {} …Run Code Online (Sandbox Code Playgroud) 当我在 span 标签中呈现数字时,Mac Voiceover 正在读取单个数字而不是数字。例如,10 读作“一个零”而不是“十”。
我怎样才能让它读“十”而不是“一个零”?
我已经搜索了答案,但似乎大多数人都有相反的问题。像 speak 和 speak-as 这样的 CSS 属性似乎没有效果。
如果您想查看示例,请尝试加载以下笔并让 Mac Voiceover 读取它(要使用 Mac Voiceover,请使用 Command + f5)。
https://codepen.io/davescode/full/GeGLYv
或者从字面上看: <span>10</span>
当我添加accessibilityCustomActions到一个对象时,它可以在设备上正常工作,因为能够在操作中上下滑动并选择它们,但是没有关于“可用操作”的公告 - 我应该将其写入accessibilityLabel我?
我认为通过向我的对象添加自定义操作,它会自动宣布“可用的操作”,或“向上滑动以选择...”
VoiceOver 应该读取accessibilityLabel屏幕上任何辅助功能元素的属性。我有一个UIImageView调用mediaImageView,下面的代码在此视图上设置可访问性,并awakeFromNib在UITableViewCell子类中调用。
imageVoiceOver不是阅读,而是阅读articleMediaCell_image哪个是accessibilityIdentifier. 谁能解释为什么会发生这种情况?
(在 iOS 13.3 设备上测试,无论是否设置自定义操作都会出现问题)
mediaImageView.isAccessibilityElement = true
mediaImageView.accessibilityIdentifier = "articleMediaCell_image"
mediaImageView.accessibilityLabel = "image"
mediaImageView.accessibilityCustomActions = [
UIAccessibilityCustomAction(
name: "expand to fullscreen",
target: self,
selector: #selector(imageTapped)
)
]
Run Code Online (Sandbox Code Playgroud) 我有一个MKAnnotationView子类并将其中的几个放在MKMapView. 该MKAnnotationView子类设置一些辅助元素是这样的:
func applyAccessibility() {
self.isAccessibilityElement = true
self.accessibilityTraits = [.none]
self.accessibilityLabel = "Bus stop map pin"
self.accessibilityValue = busStop.name
}
Run Code Online (Sandbox Code Playgroud)
VoiceOver 会读出固定在地图上的公交车站的名称。
然后,UIView当点击公交车站时,我使用一个子类作为标注视图。
func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {
if let annotation = view.annotation
{
if annotation is MKUserLocation
{
// This is our location marker
return
}
busStopAnnotationCalloutView.setupForAnnotationView(view, delegate: self)
view.addSubview(busStopAnnotationCalloutView)
mapView.setCenter(annotation.coordinate, animated: true)
}
}
Run Code Online (Sandbox Code Playgroud)
这很好用,但是这个标注视图对 VoiceOver 完全不可见。
在init标注视图中,我设置了:
isAccessibilityElement = true
accessibilityTraits = .none …Run Code Online (Sandbox Code Playgroud)