我viewcontrollers的架构是:的UITableView不能被窃听 - didSelectRowAtIndexPath方法不会激发
mainViewController(full-screen)
|
V
pageViewController(part-of-screen)
| |
V V
tableViewController1 tableViewController2
与大多数现有员额中,UIPageViewController设置为风格:UIPageViewControllerTransitionStyleScroll,这意味着pageVC.gestureRecognizers是空的,我无法找到tapGuesture禁用。
我搜索了整个下午的网站,发现没有解决方案(大多数答案都与pageCurlStyle有关)。我已经试过包括:
- 设置tableViewController.view的委托mainViewController,没用
- 实施gestureRecognizer:shouldReceiveTouch,甚至不叫
- pageVC.gestureRecognizers是空
我的天堂试图做UITouch级别的事情,这将是一种肮脏,并且将是尝试的最后一步。
我的代码是下面所附,一些说明:
- UIPageViewController * pageVC是mainViewController的数据成员)
- listVCs包含UITableViewControllers
的代码:
// 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];
你可以尝试UITableView而不是UITableView控制器,因为它对我有用。 – jailani
@jailani感谢您的评论。但UIPageViewController是一个控制器容器,它管理UIViewControllers而不是UIView本身。我不知道如何在没有UITableViewController的情况下将UITableView添加到UIPageViewController中... –
从您的视图层次结构中...您正在将视图控制器(UITableViewcontroller)提供给uipageview控制器...您可以创建uiviewcontroller来代替UITableViewController,可以添加UITableview – jailani