更改 UIScrollVIew Content Inset 触发 scrollViewDidScroll

Posted

技术标签:

【中文标题】更改 UIScrollVIew Content Inset 触发 scrollViewDidScroll【英文标题】:Changing UIScrollVIew Content Inset triggers scrollViewDidScroll 【发布时间】:2015-03-31 08:45:03 【问题描述】:

我使用以下代码为我的tableView 设置contentInset

self.scrollView.contentInset = UIEdgeInsetsMake(109, 0, 44, 0);

但这会触发UIScrollView委托方法scrollViewDidScroll:

这是预期的行为吗?如果是这样,是否有任何解决方法可以避免这种情况?提前致谢。

【问题讨论】:

【参考方案1】:

您可以在设置内容插入之前尝试删除滚动视图委托。然后重新申请委托。

id scrollDelegate = scrollView.delegate;
scrollView.delegate = nil;
scrollView.contentInset = UIEdgeInsetsMake(109, 0, 44, 0);
scrollView.delegate = scrollDelegate;

【讨论】:

嗨。问题是关于contentInset,而不是contentOffset。是的,我确实尝试过这种方法。但它没有帮助。【参考方案2】:

只需使用一个变量来检查您是否要在触发 scrollViewDidScroll 时进行操作。在 scrollViewDidScroll 中检查此变量并相应地应用您的操作。它是唯一对我有用的解决方案。在要跳过之前将此变量设置为 true 或 false。

【讨论】:

以上是关于更改 UIScrollVIew Content Inset 触发 scrollViewDidScroll的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView的contentSize、contentOffset和contentInset的理解

解决UIScrollView中添加子控件出现“UIScrollView Scrollable Content Size Ambiguity”的办法

更改 UIScrollView 内容大小

UIScrollView 更改 contentOffset 时更改框架

为啥 uiscrollview 不显示 contentOffset 更改?

UIScrollView 布局更改