【问题标题】:ECSlidingViewController freezes UIRefreshControlECSlidingViewController 冻结 UIRefreshControl
【发布时间】:2013-12-05 19:28:03
【问题描述】:

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

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

  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 中移除。

知道为什么会这样吗?

【问题讨论】:

  • 这可能是ECSlidingViewController 中的一个错误。见github.com/ECSlidingViewController/ECSlidingViewController/…
  • 很高兴知道你们仍在从事此工作并意识到此错误。谢谢!
  • 我刚刚对此进行了修复。试试最新的 master 分支,告诉我它是如何为你工作的。
  • 完美运行!感谢您的快速回复!
  • 对不起迈克尔!我已经给它第二次了,它似乎仍然不起作用=/

标签: ios objective-c ios7 uirefreshcontrol ecslidingviewcontroller


【解决方案1】:

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

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

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多