UICollectionView UIRefreshControl 在访问不同的视图后没有动画

Posted

技术标签:

【中文标题】UICollectionView UIRefreshControl 在访问不同的视图后没有动画【英文标题】:UICollectionView UIRefreshControl Doesn't Animate After Visiting a Different View 【发布时间】:2014-09-24 03:17:27 【问题描述】:

我有一个 UIRefreshControl 连接到一个以这种方式定义的 UICollection 用于拉刷新:

    self.refreshControl = [[UIRefreshControl alloc] init];
    [self.refreshControl addTarget:self action:@selector(startRefresh:)
    self.collectionView.alwaysBounceVertical = YES;
    [self.collectionView addSubview:self.refreshControl];

这很好用。但是,每当我通过推送新视图控制器或显示滑动侧边栏菜单移动到新视图并返回到该视图时,刷新控件都会开始显示一直拉动的控件的图像(即它没有动画并显示完整的圆圈)。但是,如果我完全下拉并释放,刷新控件将恢复正常功能。该控件工作正常,只是在您导航到别处后第一次拉动时看起来很时髦。

我希望能就可能出现的问题提供任何反馈。谢谢!

这是图片不工作时的样子(注意我链接到一个在线图片,这不是来自我的应用程序,所以这并不表明 collectionview 正在被拉下):

下面发布的解决方案有效,但我必须做一些额外的工作才能确定我的顶视图控制器何时从我正在使用的侧边栏菜单中获得焦点 (ECSlidingViewController):Is there a way for the Top View Controller in ECSlidingViewController to know when the sidebar menu has been dismissed?

【问题讨论】:

【参考方案1】:

加载完成后必须停止刷新

[tableView.refreshControl endRefreshing]

希望它对你有用..:)

【讨论】:

我确实在 startRefresh 选择器中调用了 endRefreshing,并且每次都可以正常工作,除了上面提到的场景。当您说完成加载后,您的意思是每次视图加载时?例如,在 viewWillAppear 中? 调用viewDidLoad并尝试 ***.com/questions/13085662/… ***.com/questions/14678727/… 也可以试试 -(void)viewWillAppear:(BOOL)animated【参考方案2】:

我的问题略有不同,但症状相似。这对我有用:

- (void)viewWillAppear:(BOOL)animated 
  [super viewWillAppear:animated];

  _refreshControl.hidden = YES;


- (void)viewDidLayoutSubviews 
  [super viewDidLayoutSubviews];
  if (_refreshControl.isRefreshing) 
    [self.collectionView sendSubviewToBack:_refreshControl];
  

【讨论】:

以上是关于UICollectionView UIRefreshControl 在访问不同的视图后没有动画的主要内容,如果未能解决你的问题,请参考以下文章

-[UICollectionView _endItemAnimations] 中的 UICollectionView 断言失败

如何滚动另一个 UICollectionView 下方的 UICollectionView?

UICollectionView 单元内部已加载,但 UICollectionView 未显示

UICollectionView 断言失败 -[UICollectionView _updateWithItems:tentativelyForReordering:]

UITableviewCell 中的 UICollectionView。添加约束后,UICollectionView 不显示

将标题添加到 UICollectionView,而不是 UICollectionView 的部分