ECSlidingViewController冻结UIRefreshControl

时间:2013-12-05 19:28:04

标签: ios objective-c ios7 uirefreshcontrol ecslidingviewcontroller

我在我的应用中使用ECSlidingViewController。我有一个带有UITableView的View Controller,它使用UIRefreshControl来执行一个长任务。当我下拉刷新时,刷新控件开始正常动画,但是当我转到顶视图控制器(在这种情况下是我的主菜单)然后返回到我的视图控制器时,refreshControl完全冻结,直到任务完成。 / p>

为了更清楚,这些是我遵循的步骤:

  1. 拉下我的tableView刷新它。
  2. 在背景上执行长任务,例如:

    - (void)pulledToRefresh:(UIRefreshControl *)refreshControl
    {
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
            long long a = 0;
            for (long long i = 0; i < 100000000000; i++) {
                a++;
            }
            dispatch_async(dispatch_get_main_queue(), ^{
                [refreshControl endRefreshing];
            });
        });
    }
    
  3. 虽然刷新控件是动画,但我幻灯片(我调用resetTopView:animated:方法或其中任何一种,我只是做一个平移手势)我当前的视图控制器向右显示我的主菜单。发生这种情况时,刷新控制突然停止动画(它冻结)。

  4. 我回到我最初使用的视图控制器,但它仍然被冻结。

  5. 任务完成,刷新控件自然地结束刷新,从我的tableView中删除自己的动画。

  6. 知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

我可能已经为此找到了解决方案....将“detectPanGestureRecognizer”方法改为下面,似乎对我有用......

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

}