UIRefreshControl 将在除 iPhone 6+ 之外的所有手机上关闭

Posted

技术标签:

【中文标题】UIRefreshControl 将在除 iPhone 6+ 之外的所有手机上关闭【英文标题】:UIRefreshControl will dismiss on all phones except iPhone 6+ 【发布时间】:2015-03-19 17:27:50 【问题描述】:

我正在使用UIRefreshControl 的实例重新加载UITableView 中的数据。

如果我在除 iPhone 6+ 以外的任何手机上运行该应用程序,刷新控制将在数据刷新完成后消失。

但是,如果我在 iPhone 6+ 上运行该应用程序,刷新控件将在用户拉下表格视图以刷新数据后保持可见。下面是表格视图元素后面可见的刷新控件的屏幕截图:

除 6+ 以外的任何其他手机都不会发生此行为。下面是刷新table-view数据的代码,在viewWillAppear里面:

    if (self.refreshControl == nil) 
        UIRefreshControl *refreshControl = [UIRefreshControl new];
        refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@" "];
        refreshControl.tintColor = [UIColor refreshColor];
        [refreshControl addTarget:self action:@selector(refreshTableView:) forControlEvents:UIControlEventValueChanged];

        self.refreshControl = refreshControl;

        self.tableView.backgroundView.layer.zPosition -= 1;
    

有谁知道为什么在 6+ 上刷新 table-view 时刷新控件会保持可见?

【问题讨论】:

设置断点后会发生什么? 我收到警告(就像我在运行应用程序时所做的那样)“强烈建议不要尝试在刷新控件不空闲时更改它,并且可能无法正常工作。” 【参考方案1】:

根据this post上的accepted answer,您必须手动删除并断开刷新控件。

这感觉很老套,事实上,several[1]places[2]on the internet[3] 似乎建议在viewDidLoad 内部调用endRefreshing。一些变体要求删除刷新控件,而另一些变体则改为 endRefreshing。

由于我不确定哪个有效,而且它可能取决于您的视图控制器的外观,所以我将由您决定。

【讨论】:

嘿 Moshe,再次感谢您的帮助和回答。我在您分享的链接中尝试了答案,但不幸的是;还没有取得任何成功。我想需要更多的调查。等我知道解决方案后一定会在这里发帖! 很抱歉听到您还没有解决问题!我现在没有想法,没有与 Apple 人员进行代码升级,但这是你的选择。那个,或者归档一个雷达。 ;) 实际上可能不是一个坏主意。 '代码升级和归档雷达有什么区别?再次感谢! 您可以在每个会员年度向 Apple 请求两次代码级支持。提交雷达只是在 bugreport.apple.com 上提交错误。代码级别的事件实际上更适合这种事情,只是因为网上没有太多可用的信息。

以上是关于UIRefreshControl 将在除 iPhone 6+ 之外的所有手机上关闭的主要内容,如果未能解决你的问题,请参考以下文章

下面的 UIRefreshControl 块视图

使用 UIRefreshControl

UIRefreshControl 重复出现

UIRefreshControl 自动启动

完全禁用 UIRefreshControl - iOS

将目标添加到 UIRefreshControl()