iOS
Swift

UITextView が初期表示時に勝手にスクロールする

More than 3 years have passed since last update.


問題

黄色の領域がUITextView。

viewcontrollerでautomaticallyAdjustsScrollViewInsetsはfalseにしてある。

下記の例だと、2行目までがframeより上にはみだしてしまう。

UITextViewが勝手にスクロールする

contentOffsetをとると、43.5point。

UserInteractionEnabledとかパラメータをいじっても変わらなかった。

表示されたときにUIScrollViewDelegateのscrollViewDidScrollが呼ばれているので、勝手にスクロールされるということで間違いなさそう。

InsetsはadjustしないけどOffsetはいじってるとかそういうこと?

scrollViewDidScrollはviewWillLayoutSubviewsの後に呼ばれていた。

Xcode6.2でiOS8.2のシミュレータでしか確認してない。


回避

挙動の意味が全く分からないがひとまず。

layoutSubviewでsetContentOffsetすることで逃げた。

viewDidLayoutSubview でanimated:falseでsetContentOffsetすることで逃げた。

override func viewDidLayoutSubviews() {

super.viewDidLayoutSubviews()
textview.setContentOffset(CGPointZero, animated: false)
}

なおviewDidAppearにanimated:trueで書くと、表示されてからスクロールがアニメーションするようになる。