滚动到顶部功能和UIRefreshControl存在问题

6

我的iOS应用程序有个问题。我正在使用一个UITableView,在其中实现了像这样的“下拉刷新”控制器:

self.refreshControl = [[UIRefreshControl alloc] init];
self.refreshControl.backgroundColor = [UIColor clearColor];
self.refreshControl.tintColor = [UIColor blackColor];
[self.refreshControl addTarget:self
                            action:@selector(loadTheXML)
                  forControlEvents:UIControlEventValueChanged];

但是,我有一个小问题。如果我向下滚动表格,并且点击状态栏以滚动到表格顶部,则刷新控制器会部分显示。这里是发生情况的gif:gif链接

如果我使用此刷新控制器一次,则不再出现该错误,当我点击状态栏时,它将滚动到表格顶部。

如何修复此错误?有任何想法吗?


你正在使用UITableViewController吗? - otakuProgrammer
是的,我正在使用UITableViewController。 - ThibaultV
也许您调用了beginRefreshing,但没有调用endRefreshing - otakuProgrammer
我正在使用endRefreshing。这是在应用启动时发生的。所以我没有使用刷新控制器。 - ThibaultV
3个回答

4

我也遇到了同样的bug,只有当你有一个带属性的标题时才会出现。如果我第一次点击搜索栏,结果也是一样的。 这里是我的解决方法:

- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView
{
     if(self.refreshControl!=nil)
     {
          [self.refreshControl beginRefreshing];
          [self.refreshControl endRefreshing];
     }
     return scrollView.scrollsToTop;
}

0

我也遇到了相同的问题。在我的代码中,我重新加载了UITableView,然后设置了刷新控件的属性标题。

解决方法是先设置刷新控件的标题,然后再重新加载UITableView。


0

稍微改进过的AlexeyIS的解决方法将只调用那段代码一次:

- (void)awakeFromNib {
    super.awakeFromNib();

    if (self.refreshControl != nil) {
        [self.refreshControl beginRefreshing];
        [self.refreshControl endRefreshing];
    }
}

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