我正在尝试使用Z手势关闭UIAlertController。我有一个非常简单的应用程序。它具有1个按钮的单个视图。轻击按钮会发出警报。我已经实现
- (BOOL)accessibilityPerformEscape {
NSLog(@"Z gesture");
return YES;
}
在启用VoiceOver的情况下,擦洗屏幕会打印出“ Z手势”,但是当我按下该按钮并且可见警报时,擦洗屏幕不会执行任何操作,不会调用该方法,也不会打印任何内容。我该怎么办才能使警报显示在屏幕上?
谢谢...
答案 0 :(得分:0)
要通过警报手势在警报视图中获得理想的结果,您可以在警报视图本身中覆盖accessibilityPerformEscape()
。
一种解决方案可能是在UIView扩展中实现此替代,如下所示:
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
}
}
}
该代码足够简短,无需进一步说明即可理解。如果不清楚,请不要犹豫。
已找到功能findMyViewController
here。