8

我有一个 UIScrollView(带分页),我向其中添加了三个 UIView。这些 UIView 中的每一个内部都有一个 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

4 回答 4

4

尝试设置

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

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

于 2013-07-31T15:18:26.123 回答
4

我尝试使用基本的 Interface Builder 重现您的需求的简化版本,在我看来,它正在使用基本编码和使用默认设置。您能否请检查我的快速 n 肮脏的 Github 存储库,并请回复它是否适用于您的情况或缺少什么。

https://github.com/codedad/SO_ScrollView_with_Tables

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

  • 延迟内容触发
  • 可取消的内容触动
于 2013-07-31T15:46:54.567 回答
2

我要检查的事情:

  1. 检查您的视图层次结构 - 是否有东西放在您的 UITableView 之上,导致它没有收到点击?
  2. 您的 UITableViews 在任何地方都被禁用了吗?我会设置一个断点tableView:didSelectRowAtIndexPath:,看看是否正在调用该方法。
  3. 检查这个帖子

我想这些不是肯定的答案,但希望它们能帮助发现问题!

于 2013-07-31T15:18:33.017 回答
0

这对我有用

我以编程方式将 tableView 添加到我的滚动视图中addSubview:

UIGestureRecognizerDelegate是需要的。

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

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

        return NO;
    }
    return YES;
}
于 2017-09-07T16:04:25.320 回答