gpt4 book ai didi

ios - UIScrollView 在一个方向上被禁用 - iOS

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:04:13 25 4
gpt4 key购买 nike

我有一个没有垂直滚动的 UIScrollView,并且我在其上强制一个特定的偏移量(仅 x),以防偏移量试图变得小于该特定偏移量。我使用 setContentOffset:animated: 函数,animated 参数为 YES。正确强制偏移。

在我强制偏移后,“有时”在与初始滚动方向相反的方向上滚动会被阻止。比如说,我用手指从左向右平移滚动,并强制它偏移一些,然后我就不能再从右向左滚动了。

但要注意的是,如果我在屏幕上进行任何点击,滚动就会开始。我无法平移,但如果我点击屏幕或点击任何按钮,滚动就会开始工作。如果我尝试在之后以编程方式调用按钮按下方法,比如强制偏移 5 秒,那么它不起作用。看来我需要以某种方式触摸屏幕..

我检查了 contentOffsetcontentSize 的值,它们似乎没问题。

PS:有时 scrollViewDidEndScrollingAnimation: 方法在强制偏移后没有被调用,但这不一定是问题所在。

编辑:实际上,当我使用手指将 ScrollView 移到超出阈值偏移量并继续向左平移时,就会发生这种情况。在阈值点,平移停止,但下次我尝试滚动时,它不会平移。 (即,我不在乎超过阈值)。

编辑: 另一个可能的漏洞:我在强制新偏移量之前和发出命令之后使 scrollEnabled 等于 NO要设置新的偏移量,我将其设置回 YES。我需要做的是,如果我尝试用 SCSS 滚动 ScrollView ,它不会在尝试设置新偏移量时向左滚动,因为启用了分页。

编辑: 可能是因为我在实际使用触摸滚动时将 scrollEnabled 设置为 NO 吗?我稍后会启用它,但也许这是个问题...

重要编辑:如果我长按 ScrollView ,然后尝试移动, ScrollView 开始滚动!

编辑:这段代码在scrollViewDidScroll:

if ((theScrollView.contentOffset.x < theScrollView.frame.size.width)
&& [currentlyDisplayedVC isEqual:VC1])
{
//if this is not done, and this call happens when VC3
//is visible a bit too much, scrollView scrolls till VC3.
scrollView.scrollEnabled = NO;

[scrollView setContentOffset:CGPointMake(scrollView.frame.size.width, 0) animated:YES];
scrollView.scrollEnabled = YES;

//this is done so that this block is not reached everytime during scroll animation.
currentlyDisplayedVC = VC2;
}

然后在 scrollViewDidEndWithANimation: 中添加 [self VC2reached]

最佳答案

您是否尝试过使用 setUserInteractionEnabled:NOYES 来停止/允许用户与 UIScrollView 交互,而不是使用 scrollEnabled 属性?

关于ios - UIScrollView 在一个方向上被禁用 - iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16714242/

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