gpt4 book ai didi

iphone - 减速时对 UIScrollView contentOffset 的更改不会坚持

转载 作者:行者123 更新时间:2023-12-03 20:01:01 26 4
gpt4 key购买 nike

我看过UIScrollView. Any thoughts on implementing "infinite" scroll/zoom? ,但它并没有完全解决我的问题。不过,我很困惑,因为我猜其他人没有看到我的问题,所以也许这与我的代码细节有关。 Allisone 提供的示例代码与我的类似,尽管我使用scrollViewDidScroll 来监视contentOffset 而不是自定义KVO 方法。

当我的 UIScrollView 减速时,如果我在 UIScrollView 边界的左侧插入一个 subview ,并按插入 subview 的宽度增加 contentOffset,则我对 contentOffset 的更改将被忽略;内容按照插入的 subview 的宽度“跳跃”,并且 contentOffset 值流在后续的scrollViewDidScroll调用中继续其当前轨迹。单纯追踪的话,是没有问题的。我可能做错了什么吗?就好像bounds 或contentOffset 对于减速事件来说是粘性的。

用例:UIScrollView 具有非常大的虚拟内容,可以动态分页进出,当用户平滑地滚动 UIScrollView 中的内容(例如向左)时,应在最左侧插入附加内容的 ScrollView ,而不破坏当前正在进行的平滑滚动。正如我所说,如果禁用减速或者我依靠拖动而不是轻拂,则效果很好。

起初我希望问题是由于将 UIScrollView 的内容从 callout 内更改为scrollViewDidScroll 引起的,因此我通过执行延迟的 PerformSelector 进行了仔细检查,但问题仍然存在。

谢谢,凯文

最佳答案

遇到同样的问题。看起来像是奇怪的 UIScrollView bug。我把它固定在 StreetScroller 的基础上来自苹果公司的例子。 InfiniteScrollView 继承自 UIScrollView 并且在那里工作得很好。但是,如果您想创建在其内部使用 UIScrollView 的自定义类,您可以子类化此 UIScrollView 并在需要将内容居中时调用委托(delegate),如下所示:

tScrollView : UIScrollViewIn tScrollView.m:- (void)recenterIfNecessary {    if (_tDelegate && [_tDelegate respondsToSelector:@selector(offsetForRecenterScrollView:)])        self.contentOffset = [_tDelegate offsetForRecenterScrollView:self];}- (void)layoutSubviews {    [super layoutSubviews];    [self recenterIfNecessary];}

在委托(delegate)中实现 offsetForRecenterScrollView: 并返回新的 CGPoint 以在 scrollView.contentOffset 中设置。

关于iphone - 减速时对 UIScrollView contentOffset 的更改不会坚持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3239636/

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