Kex*_*Kex 6 uitabbarcontroller uinavigationcontroller uigesturerecognizer ios swift
我有一个TabBarController三个标签。第一个和最后一个选项卡是导航控制器,我希望在其中启用向后滑动。中间选项卡只是一个标准的viewController. 默认情况下,似乎未启用向后滑动。我想那是因为我在这两个中使用了后退按钮navigationControllers。我在两个导航控制器的根视图控制器中尝试了以下代码来启用它:
在viewDidLoad:
self.navigationController?.interactivePopGestureRecognizer?.delegate = self
Run Code Online (Sandbox Code Playgroud)
并符合UIGestureRecognizerDelegate:
func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
if (self.navigationController?.viewControllers.count)! > 1 {
return true
}
return false
}
Run Code Online (Sandbox Code Playgroud)
滑动返回工作现在可以正常工作,但是如果一个视图控制器将另一个视图控制器推到 UI 顶部,应用程序将全部冻结。在 Swift 中启用和禁用回扫的正确方法是什么?
小智 5
对于像我这样在 2 年后发现这个没有答案的人
视图控制器
在:viewDidAppear
self.navigationController?.interactivePopGestureRecognizer?.delegate = self
Run Code Online (Sandbox Code Playgroud)
和你的 UIGestureRecognizerDelegate
extension YourViewController: UIGestureRecognizerDelegate {
func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
if gestureRecognizer.isEqual(navigationController?.interactivePopGestureRecognizer) {
navigationController?.popViewController(animated: true)
}
return false
}
Run Code Online (Sandbox Code Playgroud)
实现这一目标的两个步骤:
UIGestureRecognizerDelegate到您的类继承中viewDidLoad以下内容:要启用向后滑动:
navigationController?.interactivePopGestureRecognizer?.isEnabled = true
Run Code Online (Sandbox Code Playgroud)
要禁用向后滑动:
navigationController?.interactivePopGestureRecognizer?.isEnabled = false
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8770 次 |
| 最近记录: |