我有一个动态的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
,我找不到任何信息。
当动作触发时,我需要知道索引路径,以便可以做出相应的响应并更新我的模型。
达到目标的最佳方法是通过直接在对象中覆盖它们来<UIAccessibilityFocus informal protocol方法(在您的情况下为表视图单元格类):您将可以捕获触发自定义操作时所需的索引路径。
我建议看一下this answer,以处理捕获的可访问性焦点更改,如果需要,它包含带有代码段的详细解决方案。😉