按下“后退”按钮时UIScrollView被冻结?

时间:2019-06-05 05:38:55

标签: ios objective-c uiscrollview

我在UIView中有一个{{1}中的一个UICollectionViewUIScrollView。我必须同时滚动两个我无法对其进行滚动的视图。因此,当我第一次启动该屏幕时,我可以滚动整个视图,但是当我按下(next 1stVCViewController然后按“返回”按钮2ndVC时,我的滚动视图是没有执行它就冻结了。

尝试此方法:-

1stVC

尝试此方法:-

-(void)viewDidLayoutSubviews{
    [super viewDidLayoutSubviews];

    dispatch_async(dispatch_get_main_queue(), ^ {
        CGRect contentRect = CGRectZero;

        for(UIView *view in self.scrollView.subviews)
            contentRect = CGRectUnion(contentRect,view.frame);

        self.scrollView.contentSize = contentRect.size;
    });
}

为了获得“集合”视图的动态高度,我已经完成了

-(void)viewDidLayoutSubviews{
    [super viewDidLayoutSubviews];

    [_scrollView setContentSize:CGSizeMake(_scrollView.frame.size.width, _scrollView.frame.size.height)];

}

我已提供给ScollView ContentSize。

CGFloat height = _collectionCompass.contentSize.height;

请帮助我。

1 个答案:

答案 0 :(得分:1)

我真正建议的是删除滚动视图并在集合视图中执行所有操作,因为使用滚动视图会丢失一些好处(例如,单元格重用)。此外,在滚动视图中使用集合视图也是一种不好的做法。 来自Apple style guide

  

请勿将滚动视图放在另一个滚动视图内。这样做会导致难以控制的界面难以控制。

如果用户界面为列表,则可以将视图添加为集合视图的标题或另一个单元格。使用这种方法,您可以从viewDidLayoutSubviews

中删除代码