2014-02-24 54 views
3

我正在研究iOS 7 iPad应用程序的“用户个人资料”部分。在这一领域,我们通过一系列页面向用户介绍他们自己的信息 - 传记信息,家庭,联系信息等。我设置的方式是通过UIPageViewController,其中用户个人资料的每个页面是它自己的UIViewController(带有一个UIScrollView,因为每个页面都可以变长),以便用户在浏览页面时可以平滑地滑动页面。在一些页面上,我们也有UITableViews(不占用整个屏幕,因为这是一个iPad应用程序,而不是iPhone应用程序)供用户添加信息。因此,在这些网页上的整体简化视图层次是:iOS 7 iPad:UITableView在UIPageViewController中滑动删除(冲突手势识别器)

UIPageViewController
的UIScrollView
的UITableView

我希望用户能够使用刷卡到删除手势从UITableView中删除单元格。不幸的是,在UITableView中激活滑动删除的平移手势被UIPageViewController拾取并滚动到下一页,而不是显示删除按钮。让删除按钮显示是非常不一致的 - 可能是9次,它会滚动到下一页。

理想情况下,我将访问UIPageViewController的平移手势识别器,并尝试设置它与UITableView的平移手势识别器之间的某种依赖关系,或者让UIPageViewController的手势识别器不会在UITableViewController区域内触发, 或者其他的东西。但是,由于this phenomenon(无论是错误还是功能),我无法访问UIPageViewController的手势识别器,所以我不能做像设置其委托和覆盖像gestureRecognizerShouldBegin这样的方法的事情。我也无法获得UIPageViewController视图的手势识别器。

有没有人有任何想法来解决这个问题?

回答

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一类方法一个很好的候选人。

+0

不幸的是,由于每个单独的页面视图控制器都有一个UIScrollView,所以我认为这种方法也可以捕捉那些滚动视图并阻止它们滚动,对吗?由于这些单独的页面是UIPageViewController的子视图。这将是不受欢迎的。 – UberJason

+0

不,在pvc中有一个滚动视图,位于包含的vc视图下(循环的一点是不依赖于pvc视图的任何其他子视图)。循环只挖掘一个深度。但是我认为我的答案对你来说还是不够的,因为它确实不能解决选择性使​​用页面滚动手势的需要。我不确定你的问题是否可以在不访问页面视图控制器的gr的情况下解决。 – danh

+0

我明白了,谢谢澄清。不幸的是,我认为你是对的,这并不能完全解决问题,但如果我需要这样做的话,记住一个好的提示。 – UberJason