我如何确定哪个UITableView行触发了UIAccessibilityCustomAction?

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

我有一个动态的UITableView。对于每个单元格,我添加一个UIAccessibilityCustomAction。当动作触发时,我需要知道索引路径,以便可以做出相应的响应并更新我的模型。

tableView(_:cellForRowAt:)中,我这样添加我的UIAccessibilityCustomAction ...

cell.accessibilityCustomActions = [
    UIAccessibilityCustomAction(
        name: "Really Bad Name",
        target: self,
        selector: #selector(doSomething)
    )
]

我尝试使用UIAccessibility.focusedElement无效...

@objc private func doSomething() {
    let focusedCell = UIAccessibility.focusedElement(using: UIAccessibility.AssistiveTechnologyIdentifier.notificationVoiceOver) as! UITableViewCell
    // Do something with the cell, like find the indexPath.
}

问题是,投射到单元格失败。调试器说返回值类型实际上是UITableTextAccessibilityElement,我找不到任何信息。

ios uitableview uikit voiceover
1个回答
0
投票

当动作触发时,我需要知道索引路径,以便可以做出相应的响应并更新我的模型。

达到目标的最佳方法是通过直接在对象中覆盖它们来<UIAccessibilityFocus informal protocol方法(在您的情况下为表视图单元格类):您将可以捕获触发自定义操作时所需的索引路径。

我建议看一下this answer,以处理捕获的可访问性焦点更改,如果需要,它包含带有代码段的详细解决方案。😉
© www.soinside.com 2019 - 2024. All rights reserved.