首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ECSlidingViewController冻结UIRefreshControl

ECSlidingViewController冻结UIRefreshControl
EN

Stack Overflow用户
提问于 2013-12-05 19:28:03
回答 1查看 566关注 0票数 0

我在我的应用程序中使用ECSlidingViewController。我有一个带有UITableView的视图控制器,它使用一个UIRefreshControl来执行一个长任务。当我下拉到刷新时,刷新控件通常会启动动画,但是当我转到顶部视图控制器(在本例中是我的主菜单),然后返回到我的视图控制器时,refreshControl会完全冻结,直到任务完成。

为了更清楚地说明这一点,以下是我所遵循的步骤:

  1. 拉下我的tableView刷新它。
  2. 在后台执行一个长任务,如:

  • ( dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW,)pulledToRefresh:(UIRefreshControl *)refreshControl {dispatch_get_main_queue 0,^{ long a= 0;for (long long i= 0;i< 100000000000;i++) { a++;} dispatch_async(dispatch_get_main_queue(),^{ refreshControl endRefreshing;});};}

  1. 当刷新控件正在动画时,我幻灯片(我不调用resetTopView:animated:方法或其他方法,我只是做了一个pan手势)我的当前视图控制器在右边显示我的主菜单。当这种情况发生时,刷新控件突然停止动画(冻结)。
  2. 我回到我最初使用的视图控制器,但是它仍然是冻结的。
  3. 任务完成,刷新控件自然结束刷新,用一个很好的动画将自己从我的tableView中删除。

知道为什么会这样吗?

EN

回答 1

Stack Overflow用户

发布于 2014-02-11 15:15:47

我可能已经找到了解决办法.把"detectPanGestureRecognizer“方法改到下面,似乎对我很管用.

代码语言:javascript
复制
- (void)detectPanGestureRecognizer:(UIPanGestureRecognizer *)recognizer {
if (recognizer.state == UIGestureRecognizerStateBegan) {
    _isInteractive = YES;
}
dispatch_async(dispatch_get_main_queue(), ^{
    [self.defaultInteractiveTransition updateTopViewHorizontalCenterWithRecognizer:recognizer];
});
_isInteractive = NO;

}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20408818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档