gpt4 book ai didi

ios - 带有可折叠侧边栏菜单的 UITapGestureRecognizer Swift

转载 作者:行者123 更新时间:2023-11-30 13:10:32 43 4
gpt4 key购买 nike

我目前正在编写一个应用程序,其中包含主屏幕 View Controller 和侧边栏菜单 View ,该 View 在加载主屏幕时实例化,并在单击汉堡包图标时打开。我正在尝试实现以下功能:在菜单打开时单击菜单外部会关闭菜单,并将主视图恢复正常功能,该功能在打开菜单时被禁用。我在 viewDidLoad() 中实例化了一个 UITapGestureRecognizer 来检测用户何时点击主视图。

    let tapRecognizer:UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(HomeViewController.handleTap(_:)))
self.tableView.addGestureRecognizer(tapRecognizer)

这是实现:

func handleTap(sender: UITapGestureRecognizer) {
if menu.isMenuOpen {
menu.showMenu(false)
self.tableView.allowsSelection = false
}
}

但是,点击菜单会关闭菜单,就像点击菜单外部一样。此外,由于点击手势识别器仅识别特定的点击,因此主屏幕上的所有内容始终被禁用。我在 iOS 9.3 上运行 XCode 7.3。图像: Home view controller with menu open

最佳答案

您可以实现UIGestureRecognizerDelegate并设置tapRecognizer.delegate = self

然后实现下面的方法

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool {
if (gestureRecognizer == tapRecognizer){
let point = touch.locationInView(self.view)
if CGRectContainsPoint(menuView.frame, point) == true {
return false
}
}
}

关于ios - 带有可折叠侧边栏菜单的 UITapGestureRecognizer Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38780723/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com