gpt4 book ai didi

iphone - 扩展 UIScrollView 并监控滚动事件

转载 作者:行者123 更新时间:2023-12-03 18:24:36 25 4
gpt4 key购买 nike

我想在 iPhone 应用程序中实现一些自定义、可重用且高效的滚动行为,因此我使用自定义控件扩展 UIScrollView 并希望跟踪滚动运动。

现在我知道我可能可以将自定义控件分配为 UIScrollViewDelegate 并在内部响应 scrollViewDidScroll 调用,但这对我来说感觉不正确(我可能是错误的)。

这感觉不正确,因为委托(delegate)针对的是应用程序特定的 UI 逻辑,并且控件应该高于此级别。这也意味着如果应用程序类也将自己分配为委托(delegate),我需要中继委托(delegate)调用,这似乎效率低下。

作为 UIScrollView 的直接后代,我希望能够重写触发 scrollViewDidScroll 委托(delegate)调用的方法,或者能够访问模板方法,或监听滚动事件,但我看不到任何此类选项。

查看UITableView.h文件,UITableView似乎没有将自己设置为UISCrollViewDelegate,所以我想知道它是如何实现的管理这个(我假设当它回收单元时它必须跟踪它们相对于可见边界的位置)。

我对这个平台还很陌生,所以我可能会错过一些明显的东西。任何帮助表示赞赏。

最佳答案

找到了!! (完全是偶然)

我已经辞职将我的 UIScrollView 子类分配为 super 的委托(delegate),然后实现 scrollViewDidScroll: 委托(delegate)方法,但是在实现的过程中,我在我的scrollViewDidScroll方法中间遇到了异常。快速查看堆栈跟踪显示我的委托(delegate)方法实际上是从 setContentOffset:

调用的

事实证明,如果您覆盖 setContentOffset:,每次 ScrollView 移动时您都会收到一个调用!它带有一个方便的 contentOffset 结构来告诉您 ScrollView 当前在哪里:)

- (void)setContentOffset:(CGPoint)contentOffset
{
[super setContentOffset:contentOffset];

NSLog(@"ViewDidScroll: %f, %f", contentOffset.x, contentOffset.y);
}

关于iphone - 扩展 UIScrollView 并监控滚动事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/719392/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com