UIRefreshControl首次运行时标题偏移不正确,有时标题丢失

Pet*_*isu 29 cocoa-touch uitableview uirefreshcontrol ios7

第一次启动UIRefreshControl时文本被错误地反映...稍后有时刷新文本根本没有出现,只有刺状是可见的

我不认为我对iOS6有这个问题...可能与iOS7有关

在UITableViewController中作为子项添加到VC中,它驻留在一个模态呈现的UINavigationController中

- (void)viewDidLoad {

    [super viewDidLoad];

    [self setRefreshControlText:@"Getting registration data"];
    [self.refreshControl beginRefreshing];
}

- (void)setRefreshControlText:(NSString *)text {

    UIFont * font = [UIFont fontWithName:@"Helvetica-Light" size:10.0];
    NSDictionary *attributes = @{NSFontAttributeName:font, NSForegroundColorAttributeName : [UIColor blackColor]};
    self.refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:text attributes:attributes];

}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

在此输入图像描述

Ben*_*son 39

这绝对是一个iOS 7的bug,但我还没弄清楚究竟是什么导致了它.它似乎与视图层次结构有关 - 将我的UITableViewController作为子视图添加到包装器视图控制器似乎最初为我修复它,尽管自iOS 7 GM以来该错误已经回来了.

在创建刷新视图后,将以下代码添加到UITableViewController似乎可以解决定位问题:

dispatch_async(dispatch_get_main_queue(), ^{
    [self.refreshControl beginRefreshing];
    [self.refreshControl endRefreshing];
});
Run Code Online (Sandbox Code Playgroud)

  • 是的,即使有解决方法,这个问题又回来让我在后来的iOS版本中咬我.我注意到Mail.app在应用程序的微调器中没有标签,这让我相信这是一个内部已知的问题,他们还没有完全正确. (3认同)
  • 嗯,[self.refreshControl setNeedsLayout]; 似乎更适合这种问题.开始/结束刷新是一个黑客. (2认同)