我在我的应用中使用ECSlidingViewController。我有一个带有UITableView的View Controller,它使用UIRefreshControl来执行一个长任务。当我下拉刷新时,刷新控件开始正常动画,但是当我转到顶视图控制器(在这种情况下是我的主菜单)然后返回到我的视图控制器时,refreshControl完全冻结,直到任务完成。 / p>
为了更清楚,这些是我遵循的步骤:
在背景上执行长任务,例如:
- (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];
});
});
}
虽然刷新控件是动画,但我幻灯片(我不调用resetTopView:animated:
方法或其中任何一种,我只是做一个平移手势)我当前的视图控制器向右显示我的主菜单。发生这种情况时,刷新控制突然停止动画(它冻结)。
我回到我最初使用的视图控制器,但它仍然被冻结。
任务完成,刷新控件自然地结束刷新,从我的tableView中删除自己的动画。
知道为什么会这样吗?
答案 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;
}