当可访问性元素设置为 false 时,画外音仍然突出显示栏按钮

Voice over still highlight bar button when accessibility element is set to false

在我的导航栏中,有一些栏按钮项。其中一个只显示带有应用程序徽标的图像,当用户单击它时没有任何操作。

启用画外音后,每次启动应用程序时,它都会说出按钮的标签和类型。

所以我尝试通过以下代码禁用它:

    appIconButton.accessibilityElementsHidden = true
    appIconButton.isAccessibilityElement = false
    appIconButton.accessibilityValue = ""
    appIconButton.accessibilityLabel = ""
    appIconButton.accessibilityTraits = .notEnabled

然而,画外音仍然可以突出显示按钮,并说出变暗的按钮。我不知道我想念什么来防止画外音识别条形按钮。

导航栏中添加的UIBarButtonItem属于私有class_UIButtonBarButton(感谢Accessibility Inspector举例) 例如,您不能随心所欲地处理视图。 ‍

就我个人而言,在处理导航栏时,我总是遵循 these instructions 包括 a11y 的自定义元素。

为了找出适合您初始情况的解决方案,我创建了一个空白项目,定义如下:

我把代码放在视图控制器中如下:

@IBOutlet weak var navBar: UINavigationBar!
@IBOutlet weak var myPlusButton: UIBarButtonItem!
@IBOutlet weak var myBackButton: UIBarButtonItem!


override func viewDidAppear(_ animated: Bool) {
    
    super.viewDidAppear(animated)
    
    var a11yRightBarButton: UIBarButtonItem?
    
    let a11y = UILabel()
    a11y.text = "OK"
    a11y.sizeToFit()
    
    a11yRightBarButton = UIBarButtonItem(customView: a11y)

    a11yRightBarButton?.isAccessibilityElement = false
    //if true, the following attributes will be taken into account.
    a11yRightBarButton?.accessibilityTraits = .button
    a11yRightBarButton?.accessibilityLabel = "validate your actions"
    
    navigationItem.setLeftBarButton(myBackButton, animated: false)
    navigationItem.setRightBarButtonItems([myPlusButton,a11yRightBarButton!], animated: false)
    
    navBar.setItems([navigationItem], animated: false)
}

... 我用 VoiceOver 得到了最终结果,没有读出也没有选择所需的元素 (“确定”按钮)