添加一个动作以快速向后滑动 4

Posted

技术标签:

【中文标题】添加一个动作以快速向后滑动 4【英文标题】:Adding an action to back swipes swift 4 【发布时间】:2019-01-07 22:11:04 【问题描述】:

我已将其中一个视图控制器中导航栏中的后退按钮更改为自定义按钮,并在按下该按钮时为该按钮提供了一个操作:

self.navigationItem.hidesBackButton = true
let backButton = UIBarButtonItem(image: UIImage(named: "backArrow"), style: .plain, target: self, action: #selector(self.back))
self.navigationItem.leftBarButtonItem = backButton

这很完美,我可以通过以下方式保持向后滑动以弹出视图控制器:

self.interactivePopGestureRecognizer?.isEnabled = true
self.interactivePopGestureRecognizer?.delegate = self

在我的导航控制器文件中。不幸的是,当我向后滑动时,我无法(或者我还没有弄清楚)调用我的视图控制器中的 back() 函数来更改后退按钮。我如何以及在哪里检测到我正在滑动以返回,以便我可以调用该特定视图控制器中的后退函数?

【问题讨论】:

【参考方案1】:

喜欢这个答案你可以订阅手势:https://***.com/a/36893464/1484378

// In UINavigationController

override func viewDidLoad() 
    super.viewDidLoad()
    self.interactivePopGestureRecognizer?.addTarget(self, action:#selector(self.handlePopGesture))


@objc func handlePopGesture(gesture: UIGestureRecognizer) -> Void 
    if gesture.state == .began 
        back()
    

您可能需要添加一些自定义逻辑来访问视图控制器的返回方法,例如:if let vc = visibleViewController as? MyViewController vc.back()

【讨论】:

快乐是我的。

以上是关于添加一个动作以快速向后滑动 4的主要内容,如果未能解决你的问题,请参考以下文章

通过向后滑动关闭 UISwipeActionsConfiguration

在 Swift 3.0 中实现滑动以在没有导航栏的情况下向后导航

使用向后滑动手势以交互方式取消选择选定单元格

替换后退按钮,但保持滑动以向后导航

在传递数据时向后滑动以关闭子 VC

如何在 iOS 7 上的 UINavigationController 中禁用向后滑动手势