如果点击iOS屏幕上的其他位置,则会关闭菜单?

时间:2015-08-27 00:55:17

标签: ios github uitapgesturerecognizer

所以我从github使用这个Menu。目前,如果再次单击“点击”按钮,菜单会打开并缩回,但如果用户点击除按钮之外的屏幕上的任何其他位置,我还希望菜单缩进。我遇到的问题是我在带有tabbarcontroller的导航栏中实现了这个问题,如果我点击按钮打开菜单,然后单击不同的选项卡而不折叠气泡菜单,会发生什么。然后,如果我回到相同的标签,泡泡菜单仍然在视觉上仍然打开,但在代码中它仍然认为它已折叠,这导致添加另一个子视图的任何建议的奇怪行为?

以下是现在如何运作的示例。这是link to the Code. enter image description here

2 个答案:

答案 0 :(得分:1)

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
         super.touchesBegan(touches, withEvent: event)
         //retract menu
}

此功能可检测背景点击。

答案 1 :(得分:1)

我使用了FlysoFast代码并将其转换为Swift,以检测外部点击:

self.overlay = UIView(frame: UIScreen.mainScreen().bounds)
self.overlay.backgroundColor = UIColor.clearColor()
downMenuButton.delegate = self
let tap = UITapGestureRecognizer(target: self, action: Selector("bubbleMenuButtonShouldCollapse"))

tap.numberOfTapsRequired = 1
self.overlay.addGestureRecognizer(tap)
self.overlay.addSubview(downMenuButton)
self.navigationController!.view.addSubview(overlay)

然后我使用了以下代码:

func bubbleMenuButtonShouldCollapse() {
   println("Overlay tapped")
   self.downMenuButton.dismissButtons()
}

折叠菜单。