UIAccessibilityElement`accessibilityCustomActions`无法正常工作

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

我创建了UIAccessibilityElement的实例,以便提供一组自定义操作以及一些其他信息(即accessibilityLabel + accessibilityHint

问题是VoiceOver不会宣布自定义操作的存在。他们在那儿,他们在工作,但是不被宣布。此外,自定义操作的提示也不会被宣布。

有什么想法吗?

生成元素的代码如下:

private lazy var accessibilityOverviewElement: UIAccessibilityElement = {
    let element = UIAccessibilityElement(accessibilityContainer: self)
    element.accessibilityLabel = viewModel.accessibilityOverviewTitle
    element.accessibilityHint = viewModel.accessibilityOverviewHint
    element.isAccessibilityElement = true

    let close = UIAccessibilityCustomAction(
        name: viewModel.accessibilityCloseActionTitle,
        target: self,
        selector: #selector(self.accessibilityDidClose))
    close.accessibilityHint = viewModel.accessibilityCloseActionHint

    let expand = UIAccessibilityCustomAction(
        name: viewModel.accessibilityExpandActionTitle,
        target: self,
        selector: #selector(self.accessibilityDidExpand))
    expand.accessibilityHint = viewModel.accessibilityExpandActionHint

    element.accessibilityCustomActions = [close, expand]
    return element
}()

我在viewDidLayoutSubviews()中计算元素的帧

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    var frame = view.bounds
    frame.size.height = SleepAidMinifiedPlayerViewController.defaultHeight
    accessibilityOverviewElement.accessibilityFrameInContainerSpace = frame
}

最后,由于此视图控制器从底部滑动并隐藏,但是我尚未能够将其完全从视图层次结构中移除(因此VoiceOver仍专注于其元素),因此我需要启用/禁用可访问性。

func setAccessibility(enabled isEnabled: Bool) {
    view.accessibilityElements = isEnabled ? [accessibilityOverviewElement, /* + other accessible elements*/].compactMap { $0 } : []
}

谢谢!

我创建了UIAccessibilityElement的实例,以提供一组自定义操作以及一些其他信息(即accessibilityLabel + accessibilityHint)。问题是...

ios swift uiaccessibility
1个回答
0
投票
有什么想法吗?
© www.soinside.com 2019 - 2024. All rights reserved.