在外部UIScrollView的scrollViewDidScroll里面的scrollEnabled需要两次滑动

时间:2017-08-19 12:12:57

标签: objective-c uitableview uiscrollview uicollectionview nestedscrollview

我在 UITableViewCell 中有 UICollectionView 。我想根据两者的contentOffset启用或禁用 UICollectionView UITableView 的滚动。例如,在UICollectionView的ViewController中,我有一个代码 -

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    if (scrollView.contentOffset.y == 0) {
        _collectionView.scrollEnabled = false;
        // This will enable _tableView scroll which is implemented in UITableView's ViewController
        [_delegate toggleScroll:true];

    } else {
        _collectionView.scrollEnabled = true;
       // This will disable _tableView scroll which is implemented in UITableView's ViewController
        [_delegate toggleScroll:false];
    }

}

但是启用滚动不会立即生效。第一次滚动不启用或禁用 _collectionView ,但在第二次滚动时,它按预期工作。我们无法动态启用滚动(仅在一次滑动/滚动时)?

1 个答案:

答案 0 :(得分:0)

scrollViewDidScroll来回调用以反弹集合视图的动画。因此,在动画设置scrollEnabled = false后设置scrollEnabled = true。 尝试检查0到10或某个阈值范围。

或者你可以试试这个:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    if (scrollView.contentOffset.y <= 10) {
        _collectionView.scrollEnabled = false;

    } else {
        _collectionView.scrollEnabled = true;

    }

}