2016-07-11 19 views
2

の「self.refreshControl.endRefreshing()」で消えるこれが私のコードです:更新アニメーション/糸車が停止しない/ iOSの10

func pullToRefresh() { 
    if Reachability().connectionStatus() == .Online { 
     self.homewebview.reload() 
    } else { 
     self.refreshControl.endRefreshing() 
     let alert = UIAlertView(title: "No Internet connection", message: "Please check your Internet connection.", delegate: nil, cancelButtonTitle: "Okay") 
     alert.show() 
    } 
} 

インターネット接続が利用できないとユーザーが引っ張るとアラームをリフレッシュするとアニメーションが停止するはずです。それはiOS 9でもうまくいきますが、iOS 10 Beta 2ではアニメーションが消えません。ユーザーはそれを消すためにプルアップする必要があります。それはiOS 10バグですか、何か間違っているのですか?

P.S.私はすでにassert(NSThread.isMainThread())を追加しようとしましたが、それは助けになりませんでした。

答えて

1

私も同じ問題を抱えました。ただ、周りの仕事:

let alert = UIAlertView(title: "No Internet connection", message: "Please check your Internet connection.", delegate: nil, cancelButtonTitle: "Okay") 
    alert.show() 
    self.refreshControl.endRefreshing() 

の下に、私はグーグルで検索して、いくつかの人はおよそ他のビューを表示するときに干渉するが、それは同様の問題を持っていたし、それをこのように解決し、根本的な原因

+0

ありがとう、ありがとうございます。 –

+1

これらの場合、私はいつも同じ質問をしています。「本当に、なぜ? –

+0

1

を知らない話のように変更してください。私は通知として呼び出されるすべての失敗(接続性、APIエラー)を処理する関数を持っていますが、ここではそれを単純化します。

最初に私はendRefreshingを非同期に呼び出しています(コンソールで何かエラーが表示されるはずです)。その後、アラートを1秒遅らせることで、リフレッシュコントロールが終了するのに十分な時間を与えます。

func updatedStatusFailed(notification: NSNotification) { 
    DispatchQueue.main.async { 
     self.refresher.endRefreshing() 
    } 
    self.helpers.delay(1.0, closure: { 
     let alert = UIAlertController(title: "Error", message: "Error Description", preferredStyle: UIAlertControllerStyle.alert) 
     alert.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.default, handler: nil)) 
     self.present(alert, animated: true, completion: nil) 
    }) 
} 

私の遅延機能は、私のアプリで数回使用するので、ヘルパークラスから来ています。

多くの場合、ビューがロード/表示され、ロジックをリフレッシュするときにAPIを呼び出すことがあります。この場合、あなたは復習がさわやかである場合にのみ秒で遅らせるように、この行を追加する必要があります

let delayTime:Double = self.refresher.isRefreshing ? 1.0 : 0.0 

UPDATE:20/1/16

私の多少が、ハッキーな答えが働いて、最終的に私はアラートではなく、エラーを表示するために私のtableViewにセクションを持つことを選択しました。コードと複雑さが増しましたが、UXはずっと優れています。

2

私はこの問題に遭遇してきたとUIAlertControllerを使用してそれらのために、次のようなものを試してみてください:

[self presentViewController:alert animated:TRUE completion:^{ 
    [self.refreshControl endRefreshing]; 
}]; 

これは、すぐに警告としてバックグラウンドで消えて積載スピナーを可能にしますが表示されています。

関連する問題