嵌入在UIPageViewController(ScrollStyle)中的UITableView无法点击 - didSelectRowAtIndexPath未被触发

时间:2014-07-01 10:47:07

标签: ios uitableview uipageviewcontroller

我的viewcontrollers架构是:

    mainViewController(full-screen)
             |
             V
   pageViewController(part-of-screen)
         |             |
         V             V
tableViewController1 tableViewController2

与大多数现有帖子不同,UIPageViewController设置为样式: UIPageViewControllerTransitionStyleScroll ,这意味着pageVC.gestureRecognizers为空,我找不到要禁用的tapGuesture。

我在网站上搜索了整整一个下午,并找不到解决方案(大多数答案都与pageCurlStyle有关)。我尝试过的内容包括:

  1. 将tableViewController.view的委托设置为mainViewController,无用
  2. 实现gestureRecognizer:shouldReceiveTouch,甚至不叫
  3. pageVC.gestureRecognizers为空
  4. 我没有尝试过UITouch级别的东西,这会很脏,并且是尝试的最后一步。

    我的代码附在下面,有些解释:

    1. UIPageViewController * pageVC是mainViewController的数据成员)
    2. listVCs包含UITableViewControllers
    3. 代码:

      // 3. create page view controller
      pageVC = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll          navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil];
      pageVC.dataSource = self;
      pageVC.delegate = self;
      pageVC.doubleSided = NO;
      pageVC.view.frame = _viewLayoutRef.frame;
      
      // 3.1 set the VCs into pageVC
      NSArray* aVC = @[[listVCs objectAtIndex:0]];
      [pageVC setViewControllers:aVC direction:UIPageViewControllerNavigationDirectionForward animated:NO     completion:nil];
      
      // 3.2 hook page view controller
      [self addChildViewController:pageVC];
      [self.view addSubview:pageVC.view];
      [pageVC didMoveToParentViewController:self];
      

1 个答案:

答案 0 :(得分:0)

从您的视图层次结构...您正在向视图控制器(UITableViewcontroller)提供给UIPageViewController对吗?您可以创建UITableViewController而不是UIViewController,而不是UITableview