UIPageViewController 内的 UITableViewController,如何防止对角拖动

Posted

技术标签:

【中文标题】UIPageViewController 内的 UITableViewController,如何防止对角拖动【英文标题】:UITableViewController inside UIPageViewController, How to prevent diagonal dragging 【发布时间】:2014-12-30 03:57:40 【问题描述】:

我有一个 UIPageViewController 可以水平滚动 UITableViewController 类的不同实例。

我需要检测用户拖动的方向并锁定另一个方向,因为此刻可以向任意方向滚动,即水平方向的uipageview和垂直方向的uitableview同时滚动.

我正在寻找像天气应用这样的行为,您可以在其中水平或垂直滚动​​。

这是我 atm 的错误行为:http://gfycat.com/LeafyWigglyGaur

【问题讨论】:

我使用 UICollectionView 控制器创建了一个天气应用程序,每个单元格设置为与屏幕相同的大小,水平滚动,每个单元格内都有 UIScrollvViews 和 UITableViews。对角线滚动似乎不会影响集合视图。 如果没有更好的解决方案,明天试试。谢谢。 【参考方案1】:

我从 UIPageView 切换到 UICollectionView 并且仍然无法正常工作。也许这是我不知道的视图设置。

但是,在我将 UICollectionView 和 UITableView 子类化并在两者上实现以下 UIGestureRecognizer 委托方法后,它最终工作了:

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer 

    if ([gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]] && [otherGestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]] ) 
        return NO;
    
    return YES;

实现这一点的两个 uiscrollviews 应该锁定滚动方向

【讨论】:

这不是很好的解决方案,因为如果启用tableviewcell滑动删除,这个解决方案将无法满足。但我没有更好的

以上是关于UIPageViewController 内的 UITableViewController,如何防止对角拖动的主要内容,如果未能解决你的问题,请参考以下文章

UIPageViewController 内的 UISlider

带有 UINavigationBar 的 UIPageViewController 内的 UIWebView

UIPageViewController 内的 UITableViewController,如何防止对角拖动

UIPageViewController EdgeInset 内的 UITableView 问题

uipageviewcontroller 内的 uiwebview 阻止点击翻页

无法返回 UIPageViewController 内的初始页面 ViewController