私は絶対に奇妙な種類の問題に遭遇しました。私はまだそれを修正する方法がわかりません。これは、ほぼ2日間、休憩なしで(食べる、寝る、コーヒーを飲む、喫煙することを除いて)取り組んできました。
私が持っているもの:
ビューコントローラのUIScrollView
内部に、特定の数のテキストフィールドとを含むものがありUICollectionView
ます。ボタンを使用して、コレクションビューに新しいデータを追加するための別のビューコントローラーを開きます。新しいデータアイテムが追加された後、最初のView Controllerに戻り、コンテンツに合わせて両方のサイズを変更するようinvalidateIntrinsicContentsize
に、UIScrollView
とを呼び出しUICollectionView
ます(Autolayoutを使用して、両方にコンテンツをハグさせます)。どちらのビューでも、コンテンツにうまく適合するようにこれらのメソッドを実装しましたが、この部分は完全に正常に機能します。
私の問題は何ですか:
UICollectionView
上記の方法でにデータを追加し、ランドスケープモードの場合、問題が発生します。最初のView Controllerに戻り、固有のコンテンツサイズを更新した後、コンテンツが UICollectionView
置き換えられます。つまり、データ追加ビューに切り替える前のコンテンツ内のスクロール位置がUIScrollView
、固定コンテンツオフセットのようなものになります。ここで上にスクロールすると、データを追加するView Controllerに切り替える前に、コンテンツの最大位置にスクロールして到達できます。
写真(誰もがそれを愛している):
その状況を説明するのがどういうわけか難しいことを説明するために、私は2枚の写真を追加しました。赤はスクロールビューのコンテンツ領域全体であり、濃い緑はコンテンツであり、両方が重なっている色はオリーブ色です。の表示部分はUIScrollView
、強調表示された境界線の領域に表示されます。
データを更新する前のコンテンツは、次の場所にあります。
(出典:grubbrother.com)
データを更新してUIを更新した後、コンテンツは以前のスクロール位置に置き換えられます/ contentOffset
:
(出典:grubbrother.com)
この奇妙なことで私を助けてください。残念ながら、締め切りが厳しく、プロジェクトを進める必要があります。それにもかかわらず、私はこれを解決する方法や、それを引き起こす可能性があるものさえも本当に知りません-私にはまったく手がかりがありません。