【问题标题】:UIAccessibility - When dismissing another view, set focus to previous accessibility elementUIAccessibility - 当关闭另一个视图时,将焦点设置到上一个辅助功能元素
【发布时间】:2019-04-08 22:14:18
【问题描述】:

我正在我们当前的项目中实现可访问性,但在将焦点设置在以前的视图控制器中的元素上时遇到了一些问题。

一个例子是:

用户在索引 3 处的 tableview 单元格上进行选择。在didSelectRowAt 中,我们向用户显示UIActionSheet,用户在其中进行选择。一旦用户做出选择并且呈现的UIActionSheet 被解除,可访问性焦点应该在tableview 单元格索引3 处选择,但是焦点被设置回视图中的初始元素,在我的例子中是最左上角的元素.

我使用UIAccessibility.Notification .screenChangedUIView.accessibilityViewIsModal 在呈现模态视图时设置新焦点,但这似乎没有一个很好的解决方案来在关闭视图时指向前一个元素。

任何关于如何跟踪先前可访问性元素焦点的见解将不胜感激。

【问题讨论】:

    标签: ios swift uiaccessibility


    【解决方案1】:

    首先,创建一个变量来存储TableViewController中的先前位置:

    var previousPosition: IndexPath?
    

    然后,一旦你点击一个单元格,就存储这个位置:

    override func tableView(_ tableView: UITableView,
                            didSelectRowAt indexPath: IndexPath) {
    
        previousPosition = indexPath
    }
    

    最后,当呈现的UIActionSheet 被关闭时(后面的后退按钮示例),下面的代码 sn-p 选择并聚焦触发了最新点击的表格视图单元格:

    var actionSheet: UIAlertController?
    
    actionSheet = UIAlertController(title: "Action Sheet",
                                    message: "Ready to go back?",
                                    preferredStyle: .actionSheet)
    
    let backButton = UIAlertAction(title: "B.A.C.K.",
                                   style: .cancel,
                                   handler: { (action) -> Void in
    
            print("Back button tapped")
    
            self.tableView.selectRow(at: self.previousPosition,
                                     animated: true,
                                     scrollPosition: .none)
    
           let currentCell = self.tableView.cellForRow(at: self.previousPosition!)
    
           UIAccessibility.post(notification:.layoutChanged,
                                argument: currentCell)
    })
    
    actionSheet!.addAction(backButton)
    

    在一个空白项目中检查此代码 sn-p 的结果,并在您的应用中对其进行调整以使其按需要工作。

    EDIT:除了我的代码 sn-p 之外,看看表视图的 remembersLastFocusedIndexPath 实例属性,它可以提供直接结果restoresFocusAfterTransition 视图控制器的实例属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-31
      • 1970-01-01
      相关资源
      最近更新 更多