UIScrollView内部的UITableView滚动问题

时间:2013-07-31 15:08:56

标签: iphone ios uitableview uiscrollview scroll

我有一个UIScrollView(带分页),我添加了三个UIViews。这些UIViews中的每一个都有一个UITableView。因此,用户应该能够水平滚动到他想要的页面,然后在相应的表格中垂直滚动。

但是,某些表格不会收到滚动手势。通常第一个表现良好,但其他表现不好。我无法选择单元格,也无法向上或向下滚动表格。

我使用了UIScrollView的默认设置,但viewDidLoad中定义的默认设置除外:

- (void)viewDidLoad
{
    [super viewDidLoad];

    //Load the view controllers
    [self loadViewControllers];

    //Configure the scroll view
    self.scrollView.pagingEnabled = YES;
    self.scrollView.contentSize = CGSizeMake(CGRectGetWidth(self.scrollView.frame) * viewControllers.count, CGRectGetHeight(self.scrollView.frame));
    self.scrollView.showsHorizontalScrollIndicator = NO;
    self.scrollView.showsVerticalScrollIndicator = NO;
    self.scrollView.scrollsToTop = NO;
    self.scrollView.delegate = self;

    //Configure the page control
    self.pageControl.numberOfPages = viewControllers.count;
    self.pageControl.currentPage = 0;
}

我无法弄清楚为什么我无法滚动某些表格......任何帮助都会非常感激。

提前致谢!

4 个答案:

答案 0 :(得分:4)

尝试设置

self.scrollView.delaysContentTouches = YES;
self.scrollView.canCancelContentTouches = NO;

也许UIScrollView不会将触摸信息传递给子视图。

答案 1 :(得分:4)

我尝试使用基本的Interface Builder重现您的需求的简化版本,在我看来它使用基本编码并使用默认设置。你可以检查我的快速n脏Github回购,并请回答它是否适用于您的情况或缺少什么。

https://github.com/codedad/SO_ScrollView_with_Tables

默认情况下,Interface Builder创建UIScrollView和UITableViews,启用:

  • 延迟内容触及
  • 可取消内容触及

答案 2 :(得分:2)

我会检查的事情:

  1. 检查您的视图层次结构 - UITableView上是否放置了某些内容,导致它无法接收?
  2. 您的UITableViews在任何地方都被禁用了吗?我会在tableView:didSelectRowAtIndexPath:中设置一个断点,看看是否正在调用该方法。
  3. 检查this post
  4. 我猜这些不是肯定的答案,但希望他们能帮助发现问题!

答案 3 :(得分:0)

这对我有用

我使用addSubview:

以编程方式将tableView添加到滚动视图中

UIGestureRecognizerDelegate是必需的。

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {

    if ([touch.view isDescendantOfView:self.signUpJammerList]) {

        return NO;
    }
    return YES;
}