viewの開始位置がどんどん下に下がっていくのですが…

答え:待ち時間を設定するには、awaitを使わないといけない

以下のようなコードを入れていたんだけど

.refreshable{
 DispatchQueue.global().async {
                        sleep(2)
}

}

処理も何もなし。たったこれだけ。

PulltoRefreshを連発すると、viewの開始位置がどんどん下になっていく。。。

つまり、画面上部に空白が入っていく状態。

色々調べてみると、このsleepってのがいけないらしい。

try await Task.sleep(nanoseconds: 1000000000) などで解決

ようするに、時間を止める時には、sleepはいけないらしい。

.refreshableは非同期なので、非同期で時間を止めるやつを使う必要があって、sleepは同期的なブロッキングなので使うべきじゃないとかなんとか。

アプリケーションのUI応答性が損なわれて、想定と違う動きを発生させるのだって。

今後忘れた時のためのメモとして記録

コメント