ios - 从非导航控制器视图控制器返回时,通过在屏幕上的任意位置滑动退出 navigationItem 无法按预期工作
问题描述
我将以下代码添加到每个 VCTest:
let popGestureRecognizer = self.navigationController!.interactivePopGestureRecognizer!
if let targets = popGestureRecognizer.value(forKey: "targets") as? NSMutableArray {
let gestureRecognizer = UIPanGestureRecognizer()
gestureRecognizer.setValue(targets, forKey: "targets")
self.view.addGestureRecognizer(gestureRecognizer)
}
这使我可以从屏幕上的任何位置从屏幕上的任何位置滑回基本视图控制器(导航控制器的子级)。
然而,当我离开一个非导航控制器控制器,然后返回时,突然在屏幕上滑动不起作用。从字面上看,没有什么是可交互的。
为什么会发生这种情况,我该如何解决?
解决方案
interactivePopGestureRecognizer
文档:
导航控制器在其视图上安装此手势识别器,并使用它从导航堆栈中弹出最顶层的视图控制器
所以基本上这只适用于堆栈ViewControllers
内部。UINavigationController
您可以做的是panGestureRecognizer
为非导航控制器创建另一个:
let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(dismissController))
view.addGestureRecognizer(panGestureRecognizer)
@objc
func dismissController() {
dismiss(animated: true)
}
推荐阅读
- spring-boot - 如何使用 SLF4J 排除特定记录器的特定类
- python - 用 cesar 密码加密文本,str.replace 给出 TypeError: Can't convert 'NoneType' object to str 隐式
- c - Can I use SIMD to bucket sort / categorize?
- python - Scipy curve_fit silently fails only for very specific x-values
- android - How to launch app by scanning NDEF NFC tag?
- r - R如何在给定的符号处切割列表并输出数据框?
- angular - Angular http post adds multiple empty objects after adding user data to json
- regex - Regex to allow only lowercase characters and numbers
- java - Powermock - 试图模拟方法实际上调用方法
- javascript - Responsive D3 Donut Chart