gpt4 book ai didi

iphone - 如何以编程方式强制停止 UIScrollView 中的滚动?

转载 作者:行者123 更新时间:2023-12-03 18:08:41 27 4
gpt4 key购买 nike

注意:answer given here对我不起作用。

我有一个 UIScrollView (不是 TableView ,只是一个自定义的东西),当用户执行某些操作时,我想终止 View 内的任何滚动(拖动或减速)。我试过做例如这个:

[scrollView scrollRectToVisible:CGRectInset([scrollView bounds], 10, 10) animated:NO];

理论上,给定一个已知可见的矩形,滚动将停止在它所在的位置,但事实证明这没有任何效果——显然 ScrollView 看到给定的矩形位于界限并且不采取任何行动。如果我给出的矩形绝对位于当前可见边界之外,但在 View 的 contentSize 之内,那么我可以让滚动停止。这似乎按预期停止了 View ......但也导致它跳转到其他位置。我可能可以在边缘做一些操作,让它正常工作,但是有人知道一种干净的方法来停止正在执行其操作的 ScrollView 吗?

谢谢。

最佳答案

我玩了一下你原来的解决方案,这似乎工作得很好。我认为你几乎已经拥有它,但你只是抵消了你使用太多的矩形,并且忘记了你可以直接将矩形滚动回原始矩形。

任何滚动操作的通用解决方案是这样的:

- (void)killScroll 
{
CGPoint offset = scrollView.contentOffset;
offset.x -= 1.0;
offset.y -= 1.0;
[scrollView setContentOffset:offset animated:NO];
offset.x += 1.0;
offset.y += 1.0;
[scrollView setContentOffset:offset animated:NO];
}

[编辑]从 iOS 4.3(可能更早)开始,这似乎也有效

- (void)killScroll 
{
CGPoint offset = scrollView.contentOffset;
[scrollView setContentOffset:offset animated:NO];
}

关于iphone - 如何以编程方式强制停止 UIScrollView 中的滚动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3410777/

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