我已经看到UIRefreshControl的很多问题,并且UITableViewController也有问题。该问题是如此随机发生,因此我无法弄清楚为什么或如何发生。
问题是,有时当您向下滚动tableView时,UIRefreshControl会显示在错误的位置,并且看起来像在tableView本身的上方/上方。我将附上问题外观的屏幕快照,并附上用于添加UIRefreshControl及其刷新方法的代码。
我感谢提供的任何帮助!
- (void)viewDidLoad
{
self.refreshControl = [[UIRefreshControl alloc] init];
[self.refreshControl addTarget:self action:@selector(refreshing:) forControlEvents:UIControlEventValueChanged];
[self.tableView addSubview:self.refreshControl];
self.tableView.tableFooterView = [[UIView alloc] init];
}
- (void)refreshing:(UIRefreshControl*)refreshControl
{
[refreshControl beginRefreshing];
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
[refreshControl endRefreshing];
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}
最佳答案
这是iOS7的一个已知错误;有时刷新控件被错误地放置在 View 层次结构的前面,而不是后面。您可以通过在布局后将其发送回去来解决部分问题:
- (void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
[self.refreshControl.superview sendSubviewToBack:self.refreshControl];
}
动画仍将是不完美的,但至少它仍将位于表格 View 下方。请为此问题打开bug report with Apple。
另外,如另一个答案所述,您不应自己将刷新控件添加到 View 层次结构中。表格 View Controller 将为您完成此任务。但这不是这里的问题。
Swift版本
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
refreshControl?.superview?.sendSubview(toBack: refreshControl!)
}
关于ios - UIRefreshControl在UITableViewController中的位置错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21337534/