这是一个经常发生的错误,但并非总是如此。我有一个刷新控件添加到我的UICollectionView。当我刷新时,它完美地运作。但是,如果我半次刷新它甚至完全刷新,请转到应用程序中的另一个选项卡,然后返回,当我刷新时,UIRefreshControl出现在UICollectionView的一部分上。此外,它不是从零刷新微调栏开始,而是从所有加载开始(我已经在其他应用程序中注意到了这一点,但是,这很多是操作系统错误,但在操作系统应用程序中,微调器不会过去内容)。 这是问题的图像:https://www.dropbox.com/s/4qk6qjrdlapsvz0/IMG_0074.JPG 以下是我在ViewDidLoad中设置RefreshController的方法。
refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(refresh2)
forControlEvents:UIControlEventValueChanged];
[self.collectionView addSubview:refreshControl];
self.collectionView.alwaysBounceVertical = YES;
任何人都知道如何让微调器进入CollectionViewController的后面?感谢
答案 0 :(得分:25)
我也遇到了这个问题并且弄清楚了,所以我想我会分享。我所做的是将它强制到UICollectionView的后面。我尝试过其他的东西,比如sendSubViewToBack和设置UICollectionViewCell的zIndex,但它没有用。但是下面的确有效,我在iOS 6 +上进行了测试:
refreshControl.layer.zPosition = -1;
对于iOS 6,请添加:
refreshControl.userInteractionEnabled = NO;
答案 1 :(得分:2)
<强>问题:强> 您开始向下滚动并部分显示UIRefreshControl,但您不会一直向下滚动以使其开始旋转。您导航到另一个视图(或&#34;最小化&#34; app,发送到后台)并返回。你滚动了一点,UIRefreshControl显示在你的集合视图的顶部,满载,不受欢迎,不会旋转。
<强> 解决方案: 强> 您需要在viewWillDissappear上结束重新刷新,并将应用程序发送到后台。
var refreshControl = UIRefreshControl()
override func viewDidLoad() {
super.viewDidLoad()
refreshControl.addTarget(self, action: #selector(ViewController.methodNameForRefreshing), forControlEvents: .ValueChanged)
collectionView.addSubview(refreshControl)
//or
tableView.addSubview(refreshControl)
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(ViewController.willResignActiveNotif), name: UIApplicationWillResignActiveNotification, object: nil)
}
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated)
refreshControl.endRefreshing()
}
func willResignActiveNotif(notification: NSNotification) {
refreshControl.endRefreshing()
}