在外面点击时如何关闭我的幻灯片菜单?
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:) 方法来关闭侧边菜单吗? 我只是编辑我的答案,抱歉我现在没有时间检查你的代码。以上是关于在外面点击时如何关闭我的幻灯片菜单?的主要内容,如果未能解决你的问题,请参考以下文章