ゲームでプレイ可能なラウンドを表す UITableView があります。最初の起動時には、2 つのセルのみが tableView に表示されます。ユーザーがレベルをクリアするにつれて、より多くの行が tableView に追加されます。tableView が表示されるたびに、reloadData をリロードします (これは、ユーザーがレベルをクリアするたびに発生します)。
tableView にスクロールが必要な十分なセルが含まれると、tableView はスクロールせず、ユーザーが残した場所に戻ります。スクロールしてセルが下にあることを明らかにしますが、ユーザーが指を離すと tableView が跳ね返るため、ユーザーはスクロールが必要なセルを操作できなくなります。別のレベルを完了して tableView に戻ると、ビューは適切にスクロールします。
スクロールの問題が存在する場合、ユーザーがスクロールを試みたときに下に表示されるセルがあるにもかかわらず、tableView はスクロールが必要な大きさであることを認識していないかのように、元の位置に戻ります。スクロール。
tableView のデリゲートに heightForRowAtIndexPath メソッドまたは heightForHeaderInSection メソッドを実装していないため、干渉することはありません。このサイトと Google で同様の問題を検索し、contentSize の設定などいくつか試しましたが、うまくいきませんでした。
このスクロールの欠如には何か理由がありますか? または、もっと重要なことに、それを修正する方法はありますか? ありがとう!
編集:フレームについて尋ねるコメントがいくつかあります。テーブルが含まれるビューのフレーム、tableView 自体のフレーム、テーブルが含まれるビューの viewDidAppear メソッドで tableView のコンテンツ サイズをログに記録しました。
スクロールが必要になる前にビューが表示されたときの結果を次に示します。スクロール動作は期待どおりです。ユーザーは表示領域を超えてスクロールでき、元に戻ります。
view.frame: {{0, 20}, {320, 460}}
tableView.frame: {{0, 145}, {320, 315}}
tableView.contentSize: {320, 308}
スクロールが必要なときにビューが表示されたときの結果を次に示します。スクロールすると下のセルが表示されますが、ユーザーが指を離すと、表示されるべきではないときに元に戻ります。
view.frame: {{0, 20}, {320, 460}}
tableView.frame: {{0, 145}, {320, 315}}
tableView.contentSize: {320, 352}
新しいセルが追加された後、 contentSize.height が 44 変化したことに注意してください。contentSize.height は tableView.frame.height よりも大きくなりましたが、スクロール動作にはこれが反映されません。