9

我在我的应用程序中使用 scrollViewDidScroll 委托。

但是,很多时候,即使我开始滚动,这个委托也会被调用,这会产生很多问题。我听说即使设置了特定滚动视图的 contentSize ,那时scrollViewDidScroll也会调用这个委托。

调用此委托的不同场景是什么。有哪些步骤可以控制这种情况?

我可以设置任何参数来处理这个吗?

4

5 回答 5

9

为了防止scrollDidScroll:在加载和调整视图时自动触发,我等到UIScrollView delegate所有视图加载后才使用viewDidLayoutSubviews. 它对我来说效果很好。

- (void)viewDidLayoutSubviews {
    // add table view delegate after the views have been laid out to prevent scrollViewDidScroll
    // from firing automaticly when the view is adjusted on load, which makes the tab bar disappear 
    self.tableView.delegate = self;
} 
于 2015-01-05T16:55:12.443 回答
5

相关的

scrollViewDidScroll:每次滚动边界更改时都会调用。这意味着它在滚动期间以及开始时被调用。您可能想尝试使用 scrollViewWillBeginDragging: 代替。

于 2012-07-25T18:22:25.493 回答
4

当方向改变时,scrollViewDidScroll 也会被调用。这是我从这里知道的。这是我面临的问题。现在我的问题通过这篇文章解决了。

于 2012-07-27T19:04:07.293 回答
3

嗨,伙计们,这是一个非常古老的问题,但是,如果您想知道scrollDidScroll是手动触发(通过手指)还是由于其他事件(如didSelector )触发setContentOffset,请使用该UIScrollView.isTracking属性。

于 2018-12-06T17:57:22.913 回答
1

在此方法中设置 UICollectionView、UITableView 委托这里

override func viewDidLayoutSubviews() {
     super.viewDidLayoutSubviews()
     // This method is called only after all subviews are laid
}
于 2018-04-06T10:34:23.003 回答