web-dev-qa-db-ja.com

大きいタイトルを優先し、RefreshControlがうまく機能しない

RefreshControlを使用してプルツーリフレッシュ動作を実装するために、これを tutorial を使用しています。 Navigation Barを使用しています。通常のタイトルを使用すると、すべてが正常に機能します。ただし、「大きなタイトルを優先する」を使用する場合、次のビデオでわかるように正しく機能しません。誰もが理由を知っていますか?ビデオ間の唯一の変更は、「大規模なタイトルを優先する」のストーリーボードチェックです。

With "Prefer big titles"With normal title

16
Damia Fuentes

最後に私のために働いたのは:

  • RefreshControlの進行状況バーが大きなタイトルで消えるバグを修正するには:

    _self.extendedLayoutIncludesOpaqueBars = true
    _
  • refreshcontrol.endRefreshing()の後のリストオフセットを修正するには:

    _let top = self.tableView.adjustedContentInset.top
    let y = self.refreshControl!.frame.maxY + top
    self.tableView.setContentOffset(CGPoint(x: 0, y: -y), animated:true)
    _
11
Damia Fuentes

私は同じ問題を抱えていますが、他の答えはどれもうまくいきませんでした。

テーブルビューの上部の制約をsafe areaからsuperviewその奇妙な回転バグを修正しました。

また、この制約の定数値が0 ????であることを確認してください。

if using storyboard

18
Bruno Cunha

_tableView.tableHeaderView = refreshControl_またはtableView.addSubView(refreshControl)を使用していた場合は、_tableView.refreshControl = refreshControl_を使用してみてください。

4

これを引き起こす可能性のあるさまざまな原因があるようです。私にとっては、ViewController内にTableViewが埋め込まれていました。 テーブルビューのトップレイアウトガイドを0のスーパービューに設定します。 RefreshControlの最後の編集を遅延ブロックでラップするまで、それでも何も起こりません。

DispatchQueue.main.async {
   if self.refreshControl.isRefreshing {
       DispatchQueue.main.asyncAfter(deadline: .now() + 1.0, execute: {
            self.refreshControl.endRefreshing()
       })
   }
}
2
Luke Pearce

XIBを使用して私のために働いた唯一の解決策はブルーノのものでした: https://stackoverflow.com/a/54629641/2178888

ただし、XIBを使用したくありませんでした。 AutoLayoutを使用したコードでこの機能を実現しようとして、私は多くの苦労をしました。

私は最終的に機能するソリューションを見つけました:

    override func loadView() {
        super.loadView()
        let tableView = UITableView()
        //configure tableView
        self.view = tableView
    }
0
Victor