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