我在这个github repo中使用了SideMenu库。 https://github.com/jonkykong/SideMenu 在高低之后,我无法确定如何在viewcontroller的导航栏上禁用滑动。
我将使用库中包含的示例作为示例。在MainViewController.swift
文件中,SideMenu已启动,据我所知,只有2个与手势相关的方法/功能。并且它们都与禁用对手势的反应无关。我在文件中的setUp方法中添加了这一行。
SideMenuManager.default.menuPushStyle = .preserveAndHideBackButton
我尝试在这些方法中使用childrenController
,但是一旦我这样做了,在触及左侧的项目后,我无法在定向视图上使用滑动/手势 > sidemenu /抽屉
无论如何我可以使用此库在导航栏上禁用手势吗?如果我需要编辑问题,请告诉我,因为这是我在stackoverflow中的第一个问题。
答案 0 :(得分:0)
通过上面github项目的演示示例检查,
SideMenuManager.default.menuAddPanGestureToPresent(toView: self.navigationController!.navigationBar)
此行位于“setupSideMenu”方法的“MainViewController”类中,该方法负责向导航栏添加平移手势,这会导致导航栏的滑动手势。如果您不想要此功能,则只需对该行进行注释即可。
希望它有所帮助...
答案 1 :(得分:0)
不确定您的情况,但是在我的情况下,当用户注销并进入登录屏幕时,我想禁用从左到右的手势。
在用户单击注销时,我将下面的属性设置为0.0,仅此而已。
SideMenuManager.default.menuWidth = 0.0
现在,在用户重新登录后,再次将其重置为85%。
答案 2 :(得分:0)
我只是想出如何自己UITabBarController
来完成此操作。对于UINavigationController
,该方法将类似。我创建了以下功能来启用/禁用滑动手势:
/// Keeps references to the gestures created by the SideMenu manager.
private var sideMenuGestures : [UIGestureRecognizer] = []
/// Enables or disables the swipe gestures used to show a SideMenu on the given side (default: left).
func enableSideMenuGestures(_ enable: Bool, forMenu: UIRectEdge = .left) {
if enable {
if sideMenuGestures.count == 0 {
sideMenuGestures.append(SideMenuManager.default.menuAddPanGestureToPresent(toView: self.tabBarController!.view))
sideMenuGestures.append(contentsOf: SideMenuManager.default.menuAddScreenEdgePanGesturesToPresent(toView: self.tabBarController!.view, forMenu: forMenu))
}
} else {
self.tabBarController?.view.gestureRecognizers?.removeAll(where: { sideMenuGestures.contains($0) })
sideMenuGestures.removeAll()
}
}
在您的情况下,只需将self.tabBarController
替换为self.navigationController
,它应该可以正常工作。 (self.
前缀不是必需的,但我希望将其作为一种约定包括在内,以表明它是一个继承的字段,而不是我声明的字段。)
之所以有效,是因为SideMenuManager
方便地返回对其创建的所有手势的引用;否则,您必须清除导航控制器中的所有手势,这as explained in this answer是个坏主意。
用法只是在操作处理程序中enableSideMenuGestures(true)
中显示一个按钮(例如,显示菜单)的按钮,enableSideMenuGestures(false)
当您要再次禁用这些手势时。< / p>