【问题标题】:Bug with scrollsToTop and UIRefreshControlscrollsToTop 和 UIRefreshControl 的错误
【发布时间】:2014-11-20 02:43:26
【问题描述】:

我的 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 link.

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

关于如何修复此错误的任何想法?

【问题讨论】:

  • 你在使用 UITableViewController 吗?
  • 是的,我正在使用 UITableViewController。
  • 也许你调用了beginRefreshing,但没有调用endRefreshing
  • 我正在使用 endRefreshing。这发生在应用程序启动时。所以我没有使用刷新控制器。

标签: ios objective-c iphone uitableview uirefreshcontrol


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2014-02-15
        • 2014-04-11
        • 1970-01-01
        • 2012-09-22
        • 2014-11-14
        • 1970-01-01
        • 2013-09-25
        • 2011-02-11
        • 2016-07-28
        相关资源
        最近更新 更多