iOS VoiceOver阅读accessibilityIdentifier而不是accessibilityLabel

问题描述 投票:2回答:1

VoiceOver应该读取屏幕上任何辅助功能元素的accessibilityLabel属性。我有一个名为UIImageViewmediaImageView,下面的代码在此视图上设置可访问性,并在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)
        )
    ]
ios swift accessibility voiceover
1个回答
0
投票

这是因为您在此处将控件类型(UIImage)的特征(图像)设置为accessibilityLabel的值:

mediaImageView.accessibilityLabel = "image" 

使用除对象特征以外的任何值(例如,“ Media”),因为画外音将读取您的标签值(“ Media”),后跟控件类型的特征(“ Image”)。

Apple文档摘录:

但是请注意,标签永远不能包含控件类型(例如“按钮”),因为此信息包含在特征中与可访问性元素关联。

完整文档。对于accessibilityLabel

https://developer.apple.com/documentation/objectivec/nsobject/1615181-accessibilitylabel

© www.soinside.com 2019 - 2024. All rights reserved.