Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何将手势识别器添加到ViewController及其子项?_Ios_Swift_Uigesturerecognizer_Gesture - Fatal编程技术网

Ios 如何将手势识别器添加到ViewController及其子项?

Ios 如何将手势识别器添加到ViewController及其子项?,ios,swift,uigesturerecognizer,gesture,Ios,Swift,Uigesturerecognizer,Gesture,我正在制作类似于欧洲体育的应用程序。我的rootviewController是pageViewController,它有3个VCs。左右滑动可以更改VC。接下来,我添加了侧边栏菜单。我想在整个rootViewController中添加手势识别器。这就是我添加手势的方式: self.exitPanGesture = UIPanGestureRecognizer() self.exitPanGesture.addTarget(self, action:"handleOffstage

我正在制作类似于欧洲体育的应用程序。我的rootviewController是pageViewController,它有3个VCs。左右滑动可以更改VC。接下来,我添加了侧边栏菜单。我想在整个rootViewController中添加手势识别器。这就是我添加手势的方式:

 self.exitPanGesture = UIPanGestureRecognizer()
        self.exitPanGesture.addTarget(self, action:"handleOffstagePan:")
        self.sourceViewController.view.addGestureRecognizer(self.exitPanGesture)
        self.sourceViewController.navigationController?.view.addGestureRecognizer(self.exitPanGesture)
当我拖动rootviewController点击导航栏时,它会工作。但是其他部分,如分段控制和页面内容,都不起作用

我正在此处设置sourceViewController:

 func resetToMainPage(index: Int!) {
    /* Getting the page View controller */
    mainPageViewController = self.storyboard?.instantiateViewControllerWithIdentifier("MainPageViewController") as UIPageViewController
    self.mainPageViewController.dataSource = self
    self.mainPageViewController.delegate = self

    pageContentViewController = self.viewControllerAtIndex(index)

   // self.transtionManger.sourceViewController = pageContentViewController // adding swipe to the pageContentViewControlle in order to close menu
    self.transtionManger.sourceViewController = mainPageViewController
    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)

}

因此,我的问题是如何将手势识别器添加到整个rootViewController,包括导航栏、segmentcontrol、pageviewcontrol?

手势识别器只能附加到一个视图。因此,下面的几行表示只有
navigationController?.view
添加了手势

self.sourceViewController.view.addGestureRecognizer(self.exitPanGesture)
self.sourceViewController.navigationController?.view.addGestureRecognizer(self.exitPanGesture)
您只需为每个视图复制手势识别器,然后将其全部添加

self.exitPanGesture1 = UIPanGestureRecognizer()
self.exitPanGesture1.addTarget(self, action:"handleOffstagePan:")
self.sourceViewController.view.addGestureRecognizer(self.exitPanGesture1)

self.exitPanGesture2 = UIPanGestureRecognizer()
self.exitPanGesture2.addTarget(self, action:"handleOffstagePan:")
self.sourceViewController.navigationController?.view.addGestureRecognizer(self.exitPanGesture2)

伙计们,我解决了我的问题,但我还有一个。在我的例子中,我创建了ExitTestureRecognitor。我想将其添加到整个viewcontroller视图中。这是我的代码:

 for singleView in self.sourceViewController.view.subviews {
                singleView.addGestureRecognizer(exitPanGesture)
                singleView.navigationController??.view.addGestureRecognizer(exitPanGesture)
            }
由于某些原因,navBar.view上的识别器无法工作。如果我以这种方式编写代码:

for singleView in self.sourceViewController.view.subviews {
            singleView.addGestureRecognizer(exitPanGesture)
            singleView.navigationController??.view.addGestureRecognizer(exitPanGesture)
        }
self.sourceViewController.navigationController?.view.addGestureRecognizer(self.exitPanGesture)

只有导航栏手势有效,子视图手势无效。如果我改变这个代码的顺序。导航栏手势不起作用,但子视图手势起作用。如何将手势添加到两个视图?

现在,我不能这样做,原因有两个:1)无法访问像sourceviewcontroller这样的pageviewcontroller。pageviewcontroller(找不到),接下来2)我将在不同的VC中使用此解决方案,其中一些有pageview,其他没有!我不确定。不久前我发现,这就是为什么我知道做多种手势,所有的动作都是一样的。