Ios6 当调用beginRefreshing和contentOffset为0时,UIRefreshControl不显示spiny

Ios6 当调用beginRefreshing和contentOffset为0时,UIRefreshControl不显示spiny,ios6,uitableview,uirefreshcontrol,Ios6,Uitableview,Uirefreshcontrol,调用beginRefreshing时,我无法看到加载微调器 [self.refreshControl beginRefreshing]; 我的UITableViewController子类使用UIRefreshControl // refresh UIRefreshControl * refreshControl = [UIRefreshControl new]; [refreshControl addTarget:self action:@selector(refreshTa

调用
beginRefreshing
时,我无法看到加载微调器

[self.refreshControl beginRefreshing];
我的UITableViewController子类使用UIRefreshControl

// refresh
    UIRefreshControl * refreshControl = [UIRefreshControl new];
    [refreshControl addTarget:self action:@selector(refreshTableView) forControlEvents:UIControlEventValueChanged];
    self.refreshControl = refreshControl;
它可以完美地与用户交互(当用户放下桌子时),然后微调器可见

但是,当我在viewDidLoad上调用
beginRefreshing
时,我看不到微调器(仅当我向下拖动表格时)

注:

  • self.refreshControl引用是正确的

  • 在beginRefreshing之后不会立即调用reloadData或endRefreshing,但是有很长的时间延迟(通过网络加载数据),因此我不会取消beginRefreshing

编辑:
只有当
tableView
contentOffset
属性为0并且我调用
[self.refreshControl beginRefreshing]
时,才会发生这种情况。缺陷Feauture?

我觉得它像个bug,因为它只在
tableView
contentOffset
属性为
0
时发生

我使用以下代码(UITableViewController的方法)修复了该问题:


你的修复看起来不错,但我不认为这是一个错误

手动调用beginRefreshing方法时

当没有行/单元格可用时,自动显示刷新控件是有意义的。
但是当有一些单元格可用时,当我们手动调用begin refresh(我们根据计时器定期刷新的场景)时,它不应该设置/更改内容偏移量,因为如果用户在某个可见单元格中看到/读取内容,它会分散用户的注意力

当我将节数和行数设置为0时,我尝试调用
-beginRefreshing
。它仍然不显示刷新控件。如果我没记错的话,它曾经在iOS 6上工作。所以它可能是一个bug.swift4:
self.uiRefresh?.beginRefreshing()UIView.animate(持续时间:0.25,延迟:0,选项:uiviewmanimationoptions.beginFromCurrentState,动画:{self.tableView.contentOffset=CGPoint(x:0,y:-(self.uiRefresh?.frame.size.height??0)),完成:零)
这很有效。谢谢你的发帖。奇怪的是,我在我的一些UITableView上看到了这个问题,而不是其他的…如果你的tableview在导航栏下,
偏移量将不是
0
,而是
-self.topLayoutGuide.length
。经过一整天的努力,你的解决方案终于奏效了重复的问题在哪里?
- (void)beginRefreshingTableView {

    [self.refreshControl beginRefreshing];

    if (self.tableView.contentOffset.y == 0) {

        [UIView animateWithDuration:0.25 delay:0 options:UIViewAnimationOptionBeginFromCurrentState animations:^(void){

            self.tableView.contentOffset = CGPointMake(0, -self.refreshControl.frame.size.height);

        } completion:^(BOOL finished){

        }];

    }
}