xcode scrollViewDidScroll委托正在自动调用

i34xakig  于 2022-12-19  发布在  其他
关注(0)|答案(5)|浏览(144)

我正在应用程序中使用scrollViewDidScroll委托。
但是,很多时候,即使我没有开始滚动,这个委托也会被调用,这会产生很多问题。我听说,即使为特定滚动视图设置了contentSize,这个委托(即scrollViewDidScroll)也会被调用。
调用这个委托的不同场景是什么?控制它的步骤是什么?
我可以设置任何参数来处理这个问题吗?

um6iljoc

um6iljoc1#

为了防止scrollDidScroll:在视图加载和调整时自动触发,我一直等到所有视图加载完毕后才添加UIScrollViewdelegate

- (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;
}
92vpleto

92vpleto2#

relevant
滚动视图ID滚动:每次滚动边界更改时都会调用。这意味着在滚动期间以及开始滚动时都会调用它。您可能需要尝试scrollViewWillBeginDragging:而不是。

dbf7pr2w

dbf7pr2w3#

scrollViewDidScroll也会在方向改变时被调用。这是我从here中了解到的。这是我所面临的问题。现在我的问题通过this post解决了。

vfhzx4xs

vfhzx4xs4#

如果您想知道scrollDidScroll是手动触发的(通过手指抓取器)还是由于didSelectsetContentOffset等其他事件触发的,请使用UIScrollView.isTrackingUIScrollView.isDecelerating属性。
示例用法:

if scrollView.isTracking || scrollView.isDecelerating {
    scrollPosition = collectionView.contentOffset
}
lyr7nygr

lyr7nygr5#

在此方法中的此处设置UICollectionView,UITableView委托

override func viewDidLayoutSubviews() {
     super.viewDidLayoutSubviews()
     // This method is called only after all subviews are laid
}

相关问题