【问题标题】:scrollViewDidScroll delegate is invoking automaticallyscrollViewDidScroll 委托正在自动调用
【发布时间】:2012-07-24 06:11:28
【问题描述】:
我在我的应用程序中使用 scrollViewDidScroll 委托。
但是,很多时候,即使我开始滚动,这个委托也会被调用,这会产生很多问题。我听说即使设置了特定滚动视图的 contentSize,那时也会调用这个委托,即scrollViewDidScroll。
调用此委托的不同场景是什么。有哪些步骤可以控制?
我可以设置任何参数来处理这个吗?
【问题讨论】:
标签:
iphone
ios
xcode
uiscrollview
uiscrollviewdelegate
【解决方案1】:
大家好,这是一个非常古老的问题,但是,如果您想知道 scrollDidScroll 是手动触发(通过手指)还是由于其他事件(如 didSelect 或 setContentOffset),请使用 UIScrollView.isTracking 属性。
【解决方案2】:
为了防止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;
}
【解决方案3】:
在此方法中设置 UICollectionView、UITableView 委托
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
// This method is called only after all subviews are laid
}
【解决方案4】:
scrollViewDidScroll 也会在方向改变时被调用。这是我从here 得知的。这是我面临的问题。现在我的问题通过this post 解决了。
【解决方案5】:
relevant
scrollViewDidScroll:每次滚动边界更改时都会调用。
这意味着它在滚动期间被调用,以及当它
开始。你可能想试试 scrollViewWillBeginDragging: 。