iOS滚动视图禁用自动滚动到顶部

Posted

技术标签:

【中文标题】iOS滚动视图禁用自动滚动到顶部【英文标题】:iOS scroll view disable auto scroll to top 【发布时间】:2011-12-06 13:33:12 【问题描述】:

我是 ios 开发的新手,所以这对某些人来说应该是一个简单的问题。 我正在创建一个滚动视图(尝试了不同的方式,UIScrollView、UITableView、UITableViewController),每次我向下滚动它都会自动滚动回顶部。为什么会这样?

我知道“scrollsToTop”正在侦听一些滚动到顶部的提示,但它设置为 NO,所以不应该这样。 "pagingEnabled" 已被测试为 YES 和 NO,但没有影响。

尝试实现 UITableViewDelegate 并覆盖 scrollViewShouldSrollToTop 函数并返回 NO 但该函数从未被调用,即使它被设置为 tableView 的委托。

@interface Scroller : NSObject<UITableViewDelegate>

@implementation
- (BOOL)scrollViewShouldScrollToTop:(UIScrollView )scrollView return NO;

// Did finish launching application
tableView = [[UITableView alloc] initWithFrame:tableRect style:UITableViewStyleGrouped];
self->tableView.pagingEnabled = NO;
tableView.scrollsToTop = NO;
[tableView setScrollsToTop:NO]; 
static Scroller s = [[Scroller alloc] init];
tableView.delegate = s;

不要介意格式。这一切都是一团糟。 tableView 属于应用程序委托,在 ..didFinishLaunchingWithOptions:... 函数中调用。 我在 Scroller 函数“scrollViewShouldScrollToTop”中有一个断点,但它从未被命中。

【问题讨论】:

什么时候回滚?是有延迟,还是会立即反弹? 它会立即弹回来。当我放开屏幕时,它会弹回顶部。 【参考方案1】:

如果您点击顶部栏(黑色栏),可能会发生自动滚动到顶部?在任何情况下,您都可以尝试禁用该功能 -

[yourScrollView].scrollsToTop = NO;

这应该适用于tableViewscrollView

【讨论】:

对不起,这对我不起作用。它设置为 NO,但没有任何变化。还尝试了 self->[myScrollView].scrollsToTop = NO 和 [[myScrollView] setScrollsToTop:NO]。也许代表有事?没有为委托属性分配任何内容。 你能给我看一些代码或截图吗?在黑暗的房间里很难在靶心上投掷飞镖...... 有什么方法可以为整个应用禁用此功能?【参考方案2】:

我使用 UIScrollView 而不是 UITableView 并将 contentSize 设置为比视图框架更大的值,然后它就可以工作了。不过还是不知道 UITableView 有什么问题。

【讨论】:

【参考方案3】:

当没有足够的项目来填充UITableView 中的所有高度时 - 它每次都会向后滚动。 您还应该为UIScrollView 设置 contentSize 属性以使其可滚动。

当用户点击状态栏时,应该会滚动到前面提到的顶部。但据我了解,这不是你的问题。

【讨论】:

我认为您关于滚动到顶部的权利不是我的问题。现在我用 UIButtons 填充 tableView,然后窗口可以显示更多按钮(它垂直显示 6 个,有 12 个)。我尝试设置 contentSize ,但这也没有改变任何东西。我通过 [tableView addSubView:button] 添加按钮;我也试过 [tableView insertSubview:button atIndex:0];也许这就是问题所在。按钮不是子视图而是项目/对象?但我找不到任何其他功能可以向 tableView 添加内容。【参考方案4】:

您应该禁用滚动视图的弹跳属性,在界面生成器中将其设置为 NO。

【讨论】:

以上是关于iOS滚动视图禁用自动滚动到顶部的主要内容,如果未能解决你的问题,请参考以下文章

ionic 视图滚动到顶部

_adjustContentOffsetIfNecessary - UIScrollView 自动滚动到顶部

自动滚动到顶部在 UITableView 中不起作用

滚动视图不滚动到顶部

点击状态栏时将所有滚动视图滚动到顶部

将集合视图滚动到顶部