我能在UIScrollView中使用UIRefreshControl吗?

84

我在我的应用程序中已经使用了约5个UIScrollView,它们都加载多个.xib文件。现在我们想要使用UIRefreshControl,但根据UIRefreshControl类参考文档,它们是构建用于与UITableViewControllers一起使用的。我不想重新制作所有5个UIScrollView的工作方式。我已经尝试在我的UIScrollView中使用UIRefreshControl,它可以按预期工作,但仍有一些问题:

  1. 刷新图像变成加载器后,UIScrollView会向下跳大约10个像素,只有当我非常小心地缓慢拖动UIScrollview时才不会发生这种情况。

  2. 当我向下滚动并启动重新加载,然后放开UIScrollView时,UIScrollView停留在我放开它的位置。等它结束重新加载后,UIScrollView会无动画地跳到顶部。

以下是我的代码:

-(void)viewDidLoad
{
      UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
      [refreshControl addTarget:self action:@selector(handleRefresh:) forControlEvents:UIControlEventValueChanged];
      [myScrollView addSubview:refreshControl];
}

-(void)handleRefresh:(UIRefreshControl *)refresh {
      // Reload my data
      [refresh endRefreshing];
}

有没有办法在UIScrollView中使用UIRefreshControl来节省时间呢?

谢谢!!!


1
发现你甚至可以做到这一点让我很高兴。但是,我遇到了一些问题,无法重现任何一个症状。我注意到一个完全不同的问题,即除非我在第一次创建刷新控件时明确设置初始attributedTitle(例如设置为"下拉刷新"),否则attributedTitle会出现在错误的位置,第一次下拉刷新时。因此,有几个问题:1. 在初始化创建时是否将attributedTitle设置为任何内容?另外,2. 是否使用自动布局?3. 是否对任何UIScrollViewDelegate方法进行其他操作? - Rob
11个回答

-3
您可以简单地创建一个刷新控件实例并将其添加到滚动视图的顶部。然后,在委托方法中,您可以根据自己的要求调整其行为。

如果你看了我的问题,那就是我所做的。你有不同的方法吗? - SirRupertIII

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