如何将两个 gestureRecognizers 保持在一个视图中并在它们之间切换?
How to keep two gestureRecognizers in one view and switch between them?
我的 UIPageViewController 有问题。到目前为止我做了什么:
1. 在 pageViewController 上,您可以向左、向右滑动以更改 VC
2.新增横向菜单。添加横向菜单时,我创建了 pangesture 识别器并将其添加到 pageContentVC(这样我就可以拖动 pageContentVC 以关闭侧边栏菜单)
var menuViewController: UIViewController! {
didSet {
self.exitPanGesture = UIPanGestureRecognizer()
self.exitPanGesture.addTarget(self, action:"handleOffstagePan:")
// self.exitPanGesture.view?.userInteractionEnabled = false
self.sourceViewController.view.addGestureRecognizer(self.exitPanGesture)
}
}
这里我将 pageContentVC 设置为 transitionManager 的 sourceVC:
func resetToMainPage(index: Int!) {
/* Getting the page View controller */
mainPageViewController = self.storyboard?.instantiateViewControllerWithIdentifier("MainPageViewController") as UIPageViewController
self.mainPageViewController.dataSource = self
self.mainPageViewController.delegate = self
let pageContentViewController = self.viewControllerAtIndex(index)
self.transtionManger.sourceViewController = pageContentViewController // adding swipe to the pageContentViewControlle in order to close menu
self.mainPageViewController.setViewControllers([pageContentViewController!], direction: UIPageViewControllerNavigationDirection.Forward, animated: true, completion: nil)
self.mainPageViewController.view.frame = CGRectMake(0, 102, self.view.frame.width, self.view.frame.height)
self.addChildViewController(mainPageViewController)
self.view.addSubview(mainPageViewController.view)
self.mainPageViewController.didMoveToParentViewController(self)
}
关闭菜单后我禁用了手势识别器。
` var presentingP:Bool!{
没有设置{
如果呈现 P == true {
// 只有当菜单控制器的视图出现时才启用手势识别器
self.exitPanGesture.view?.userInteractionEnabled = true
}else{
// disable gesture recognizer when menu is not presented
self.exitPanGesture.view?.userInteractionEnabled = false
isMenuVisible = false
}
}
}
` 到目前为止,我可以向左和向右滑动以更改 VC。
问题是我无法在 VC 上滚动 tableView。在我禁用 pageContentVC 手势后,除了向右和向左滑动(更改 VC)之外,所有内容都被禁用。问题:如何将两个 gestureRecognizers 保持在一个视图中并在它们之间切换?
您可以使用 UIGestureRecognizer
的 enabled
属性 禁用您不想使用的一个并启用另一个。
我的 UIPageViewController 有问题。到目前为止我做了什么: 1. 在 pageViewController 上,您可以向左、向右滑动以更改 VC 2.新增横向菜单。添加横向菜单时,我创建了 pangesture 识别器并将其添加到 pageContentVC(这样我就可以拖动 pageContentVC 以关闭侧边栏菜单)
var menuViewController: UIViewController! {
didSet {
self.exitPanGesture = UIPanGestureRecognizer()
self.exitPanGesture.addTarget(self, action:"handleOffstagePan:")
// self.exitPanGesture.view?.userInteractionEnabled = false
self.sourceViewController.view.addGestureRecognizer(self.exitPanGesture)
}
}
这里我将 pageContentVC 设置为 transitionManager 的 sourceVC:
func resetToMainPage(index: Int!) {
/* Getting the page View controller */
mainPageViewController = self.storyboard?.instantiateViewControllerWithIdentifier("MainPageViewController") as UIPageViewController
self.mainPageViewController.dataSource = self
self.mainPageViewController.delegate = self
let pageContentViewController = self.viewControllerAtIndex(index)
self.transtionManger.sourceViewController = pageContentViewController // adding swipe to the pageContentViewControlle in order to close menu
self.mainPageViewController.setViewControllers([pageContentViewController!], direction: UIPageViewControllerNavigationDirection.Forward, animated: true, completion: nil)
self.mainPageViewController.view.frame = CGRectMake(0, 102, self.view.frame.width, self.view.frame.height)
self.addChildViewController(mainPageViewController)
self.view.addSubview(mainPageViewController.view)
self.mainPageViewController.didMoveToParentViewController(self)
}
关闭菜单后我禁用了手势识别器。 ` var presentingP:Bool!{ 没有设置{ 如果呈现 P == true { // 只有当菜单控制器的视图出现时才启用手势识别器
self.exitPanGesture.view?.userInteractionEnabled = true }else{ // disable gesture recognizer when menu is not presented self.exitPanGesture.view?.userInteractionEnabled = false isMenuVisible = false } }
} ` 到目前为止,我可以向左和向右滑动以更改 VC。 问题是我无法在 VC 上滚动 tableView。在我禁用 pageContentVC 手势后,除了向右和向左滑动(更改 VC)之外,所有内容都被禁用。问题:如何将两个 gestureRecognizers 保持在一个视图中并在它们之间切换?
您可以使用 UIGestureRecognizer
的 enabled
属性 禁用您不想使用的一个并启用另一个。