VoiceOver应该读取屏幕上任何辅助功能元素的accessibilityLabel
属性。我有一个名为UIImageView
的mediaImageView
,下面的代码在此视图上设置可访问性,并在awakeFromNib
子类的UITableViewCell
中调用。
而不是读取image
,VoiceOver读取的是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)
)
]
这是因为您在此处将控件类型(UIImage)的特征(图像)设置为accessibilityLabel
的值:
mediaImageView.accessibilityLabel = "image"
使用除对象特征以外的任何值(例如,“ Media”),因为画外音将读取您的标签值(“ Media”),后跟控件类型的特征(“ Image”)。
Apple文档摘录:
但是请注意,标签永远不能包含控件类型(例如“按钮”),因为此信息包含在特征中与可访问性元素关联。
完整文档。对于accessibilityLabel
:
https://developer.apple.com/documentation/objectivec/nsobject/1615181-accessibilitylabel