UirefreshControllerはUICollectionViewを介して行きます
-
20-12-2019 - |
質問
これは頻繁に起こるのに伴うバグですが、必ずしもそうわかりません。私のUICollectionViewに更新制御が追加されました。更新したら、完璧に機能します。ただし、Full Refreshを数回更新する場合は、アプリの別のタブに移動してから戻って戻って戻って戻って、UirefreshControlはUICollectionViewの一部に表示されます。さらに、ゼロのリフレッシュスピナーバーから起動する代わりに、ロードされたすべてのアプリケーションで起動します(Mailなどの他のアプリでこれを注意してください。そのため、OSのバグですが、OSアプリでは、スピナーは終了しません。コンテンツ)。 これが問題のイメージです。 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;
.
解決
私はこの問題を持っていて、それを共有すると思ったのでそれを考え出しました。私がしたことは、UicollectionViewの後ろに強制的でした。SendSubviewTobackのような他のことを試してみましたが、UicollectionViewCellのZindexを設定しましたが、機能しませんでした。しかしながら、以下では仕事をしたと私はiOS 6 +:
でテストしましたrefreshControl.layer.zPosition = -1;
.
iOS 6の場合は、これを追加します。
refreshControl.userInteractionEnabled = NO;
. 他のヒント
問題: あなたはスクロールし始め、UirefreshControlを部分的に明らかにし始めますが、スピンを開始するようにしてください。別のビュー(または「最小化」アプリケーションに移動して、バックグラウンドに送信して戻ってきます。あなたは少しスクロールし、UirefreshControlはあなたのCollectionViewの上に完全にロードされていて、未頼りではなく回転していません。
ソリューション: あなたはViewWillDissAppearとBackgroundに送信されているアプリで終わる必要があります。
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()
}
.