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

4
我刚接触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”中设置了断点,但从未被触发。


它何时向上滚动?有延迟还是立即回弹? - Tom Elliott
它立即弹回。当我放开屏幕时,它立刻弹回到顶部。 - Elon Mallin
4个回答

6

如果您点击顶部栏(黑色栏),可能会自动滚动到顶部。无论如何,您可以尝试禁用该功能 -

[yourScrollView].scrollsToTop = NO;

这适用于tableViewscrollView


抱歉,这对我不起作用。它被设置为NO,但是没有任何变化。我还尝试了self->[myScrollView].scrollsToTop = NO和[[myScrollView] setScrollsToTop:NO]。也许与委托有关?没有将任何内容分配给委托属性。 - Elon Mallin
1
你能给我展示一些代码或截图吗?在黑暗的房间里投掷飞镖到靶心是很困难的... - Srikar Appalaraju
有没有办法可以在整个应用程序中禁用此功能? - Sundeep Saluja

1
我使用UIScrollView代替UITableView,并将contentSize设置为比视图框架更大的值,然后它就可以工作了。虽然我仍然不知道UITableView的问题在哪里。

0

UITableView中没有足够的项目来填充整个高度时,它将每次都会滚动回去。 此外,您应该设置UIScrollView的contentSize属性以使其可滚动。

如之前所提到的,当用户点击状态栏时,应该出现向顶部滚动。但据我所知,这不是您的问题。


我认为你说得对,回到顶部不是我的问题。现在,我用 UIButtons 填充 tableView,而且有更多的按钮超出了窗口显示范围(它垂直显示6个,但实际上有12个)。 我尝试设置 contentSize,但什么也没改变。我通过 [tableView addSubView:button] 添加按钮;我还尝试过[tableView insertSubview:button atIndex:0];也许这就是问题所在。该按钮不是子视图,而是一个项目/对象?但我找不到其他添加东西到 tableView 的方法。 - Elon Mallin

-1

你应该在Interface Builder中将滚动视图的bouncing属性禁用,设置为NO。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接