在外面点击时如何关闭我的幻灯片菜单?

Posted

技术标签:

【中文标题】在外面点击时如何关闭我的幻灯片菜单?【英文标题】:How can I dismiss my slide menu while tapping outside? 【发布时间】:2019-06-05 09:07:01 【问题描述】:

我有一个从网站滑入的汉堡菜单。每次我选择一个单元格时它都会关闭菜单。我想添加一个 TapRecognizer,这样当你在外面点击时它也会关闭它。

var isPresenting = true
let dimmingView = UIView()

func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval 
    return 1.0

点击外面应该关闭菜单

【问题讨论】:

【参考方案1】:

将点击手势委托分配给您的视图控制器。在手势方法中保留代码以关闭菜单。下面的代表允许手势仅在菜单外触摸时才接收触摸,并且如果它来自菜单内部则不会关闭。

@objc private func tapGesture(_ gesture: UIGestureRecognizer) 
        self.closeMenu()
    

extension SharePathViewController: UIGestureRecognizerDelegate 

    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool 
        let point = touch.location(in: view)
        return !menuView.frame.contains(point)
    


【讨论】:

我现在尝试了一些东西,但没有真正奏效..我的 menuViewController 没有做任何事情【参考方案2】:

你只需要将UITapGestureRecognizer添加到父视图

然后点击使用func location(in: UIView?) -> CGPoint并检查触摸是否在滑动菜单的框架之外。

@IBAction func touchWasDetected(_ sender: UITapGestureRecognizer) 
    let touchPoint = sender.location(in: view)
    if !slideView.frame.contains(touchPoint) 
        dissmiss()
    

方法的连接手势动作

【讨论】:

IBAction 来自哪里? 我通过从父视图上的 UITapGestrueRecognize 的情节提要实例中拖放来创建方法。 对不起,我不明白。我不知道该怎么做。 This 是我的 HomeViewController。我不能在外面点击时只使用 touchesBegan(_:with:) 方法来关闭侧边菜单吗? 我只是编辑我的答案,抱歉我现在没有时间检查你的代码。

以上是关于在外面点击时如何关闭我的幻灯片菜单?的主要内容,如果未能解决你的问题,请参考以下文章

单击蓝图幻灯片和推送菜单的文档时侧边栏菜单隐藏,无法正常工作

如何在外部点击时关闭下拉菜单?

如何在标签栏按钮点击上创建幻灯片菜单(swift)

我在用 sass 制作幻灯片菜单栏时遇到了一些麻烦

点击时不会显示移动幻灯片导航

幻灯片视图控制器