VoiceOver Z gesture won't trigger when UIAlertController is active

99封情书 提交于 2019-12-02 08:03:50

To get the desired result on your alert view thanks to the scrub gesture, override accessibilityPerformEscape() in the alert view itself.

A solution could be to implement this override in an UIView extension as follows :

extension UIView {

override open func accessibilityPerformEscape() -> Bool {

    if let myViewController = self.findMyViewController() as? UIAlertController {

        myViewController.dismiss(animated: true,
                                 completion: nil)
    }
    return true
}


private func findMyViewController() -> UIViewController? {

    if let nextResponder = self.next as? UIViewController {
        return nextResponder
    } else if let nextResponder = self.next as? UIView {
        return nextResponder.findMyViewController()
    } else {
        return nil
    }
}

}

The code is short enough to be understood without further explanation. If it's not clear, don't hesitate to ask.

The function findMyViewController has been found here.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!