Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 在UIScrollView中时出现UITableView滚动问题_Iphone_Ios_Uitableview_Uiscrollview_Scroll - Fatal编程技术网

Iphone 在UIScrollView中时出现UITableView滚动问题

Iphone 在UIScrollView中时出现UITableView滚动问题,iphone,ios,uitableview,uiscrollview,scroll,Iphone,Ios,Uitableview,Uiscrollview,Scroll,我有一个UIScrollView(带分页),我在其中添加了三个UIView。每个UIView内部都有一个UITableView。因此,用户应该能够水平滚动到他想要的页面,然后在相应的表中垂直滚动 但是,有些表不接收滚动手势。通常第一个表现不错,但另一个表现不好。我不能选择单元格,也不能上下滚动表格 我使用了UIScrollView的默认设置,但viewDidLoad中定义的设置除外: - (void)viewDidLoad { [super viewDidLoad]; //Lo

我有一个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;
}
我不明白为什么我不能滚动一些表格。。。任何帮助都将不胜感激

提前谢谢

尝试设置

self.scrollView.delaysContentTouches = YES;
self.scrollView.canCancelContentTouches = NO;
也许UIScrollView不会将触摸信息传递给子视图。

我要检查的事项:

  • 检查您的视图层次结构-是否有东西放在UITableView的顶部,导致它没有收到点击
  • 您的UITableView是否在任何地方被禁用?我会在
    tableView:didselectrowatinexpath:
    中设置一个断点,看看是否调用了该方法
  • 检查

  • 我想这些答案还不确定,但希望它们能帮助发现问题

    我尝试使用基本的界面生成器来复制您的需求的简化版本,在我看来,它使用基本编码和默认设置来工作。请检查我的quick n dirty Github回购协议,并请回复该协议是否适用于您的情况或缺少的内容

    默认情况下,界面生成器创建UIScrollView和UITableView,以启用:

    • 延迟内容涉及
    • 可取消的内容涉及
      • 这对我很有效

        我使用
        addSubview:

        需要使用
        UIgestureRecognitizerDelegate

        - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
        
            if ([touch.view isDescendantOfView:self.signUpJammerList]) {
        
                return NO;
            }
            return YES;
        }
        

        我通过interface builder尝试了该解决方案,但没有成功。我应该在代码中这样做还是相同?嗯,我没有其他的观点。目前的层次结构是这样的:UIView-UIScrollView--UIView--UITableView。但是,你说得很对。。。tableView:didSelectRowAtIndexPath在“尝试”滚动期间未调用。但我并没有禁用它(至少是故意的)。知道为什么它会被禁用吗?有没有为您的UITableView调用任何委托/数据源方法?是的,每个UITableView都有一个UIViewController,它既是表的委托又是表的数据源。我刚才偶然发现了这个答案,但实际上我不记得检查UITableView是否超出了UIScrollView的限制。我会检查并回复。谢谢欢迎很乐意帮忙,谢谢!我会试试这个,然后再打给你!:-)在我的示例中,我没有为所有表使用单独的视图控制器,因为一个视图控制器作为所有表的数据源就足够了,因为您可以在cellForRowAtIndexPath和numberOfRowsInSection中使用“tableView”参数来区分不同的表,您和@hw731似乎都是正确的,因为在您的示例和hw371发布的链接中,差异在于UITableView大小。我的表太大了几个像素,而在您的示例中,它们正好适合,这似乎是我的代码的问题。:-)非常感谢你!不客气总是希望具体的工作代码能帮助更多的人。如果你能投票支持这个答案,这可能会表明其他人也要检查这个例子。谢谢!当然可以太糟糕了,我不能将两者都标记为选定答案。;)