我正在开发iOS 7 iPad应用程序的“用户个人资料”部分。在这个领域,我们引导用户浏览一系列页面,在这些页面中他们输入自己的信息 - 传记信息,家庭,联系信息等。我设置它的方式是通过UIPageViewController,其中用户配置文件的每个页面是它自己的UIViewController(带有UIScrollView,因为每个页面可以变长),这样用户可以在页面遍历时平滑地在页面之间滑动。在一些页面上,我们还有UITableViews(不占用整个屏幕,因为这是一个iPad应用程序,而不是iPhone应用程序)供用户添加信息。因此,这些页面上的整体简化视图层次结构将是:
UIPageViewController
UIScrollView中
UITableView的
我希望用户能够使用滑动到删除手势从UITableView中删除单元格。不幸的是,UIPageViewController正在拾取激活UITableView中的滑动到删除的平移手势,并滚动到下一页而不是显示删除按钮。获取显示的删除按钮是非常不一致的 - 可能是10次中的9次,它将滚动到下一页。
理想情况下,我会访问UIPageViewController的平移手势识别器并尝试在它与UITableView的平移手势识别器之间建立一些依赖关系,或者为UIPageViewController的手势识别器设置一些逻辑,以便不在UITableViewController区域内触发,或者其他的东西。但是,由于this phenomenon(无论是bug还是功能),我无法访问UIPageViewController的手势识别器,所以我不能做像设置其委托和覆盖手势一样的事情,如gestureRecognizerShouldBegin。我也无法获得UIPageViewController视图的手势识别器。
有没有人对如何规避这个问题有任何想法?
答案 0 :(得分:1)
我不知道如何可靠地访问页面vcs手势识别器。我能给出的唯一想法是如何暂时启用/禁用它们。我无法保证它的可接受性,因为我还没有提交该应用程序,但它看起来像是犹太人:
- (void)setScrollEnabled:(BOOL)enabled onPageViewController:(UIPageViewController *)pvc {
for (UIScrollView *view in pvc.view.subviews) {
if ([view isKindOfClass:[UIScrollView self]]) {
view.scrollEnabled = enabled;
}
}
}
如果可以接受,它是UIPageViewController上类别方法的一个很好的候选者。