使用scrollsToTop和UIRefreshControl的错误

时间:2014-11-20 02:43:26

标签: ios objective-c iphone uitableview uirefreshcontrol

我的iOS应用中存在错误。我正在使用UITableView,我在其中实现了“pull to refresh”控制器,如下所示:

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 link

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

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

3 个答案:

答案 0 :(得分:4)

我遇到了同样的错误,只有当你有一个属性标题时才会发生。它也会发生,如果我第一次点击搜索栏,结果是相同的。 这是一个对我有用的解决方法:

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

答案 1 :(得分:0)

AlexeyIS'解决方法的略微改进版本只会调用该代码一次:

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

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

答案 2 :(得分:0)

我也有同样的问题。在我的代码中,我正在重新加载UITableView,然后为刷新控件设置属性标题。

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