回答:
テキストビューはスクロールビューです。ビューコントローラーは、ナビゲーションバーとステータスバーの後ろに上にスクロールすることを想定しているため、ビューをスクロールするためにコンテンツオフセットを自動的に追加します。
これを防ぐには、テキストビューを含むビューコントローラで次のプロパティを設定します。
self.automaticallyAdjustsScrollViewInsets = NO
IronManGillが示した現在の回答は、問題が最初に発生する理由の理解に基づいていないため、良い解決策ではありません。
jrturtonの答えも、それを解決するための最もクリーンな方法ではありません。オーバーライドする必要はありません。単純にする!
必要なのは、以下を設定することだけです。
self.automaticallyAdjustsScrollViewInsets = NO;
viewDidLoadメソッド内。
ドキュメントをチェックしてください:https : //developer.apple.com/documentation/uikit/uiviewcontroller/1621372-automaticallyadjustsscrollviewin
automaticallyAdjustsScrollViewInsets
廃止予定です。iOS11、使用からcontentInsetAdjustmentBehavior
これはこの64ポイント自動挿入画は、ときにのみ追加されます...本当の機能である場合、私は本当に不思議UIScrollView
やUITextView
View Controllerのビューのすべてのサブビューの大きいの深さなど。たとえば、スクロールビューの後ろにビューを追加する場合(ここでは、ビューのインブリケーションではなく、Zバッファーについて話しています)、この64ポイントのインセットは自動的に追加されません。
たとえば、これははめ込みを追加します:
この場合、挿入図は追加されません。
これは本当に私には奇妙に思われます... OSがビューの深さを見て、ビューを拡張する必要があるかどうかを判断するのはなぜですか?
迅速に(Xcode 6)
self.automaticallyAdjustsScrollViewInsets = false
viewDidLoad
テキストビューとビューコントローラの。
automaticallyAdjustsScrollViewInsets
廃止予定です。iOS11、使用からcontentInsetAdjustmentBehavior
この問題は、コンテンツオフセットを負の値に設定することで解決しました。これがSwiftコードです。
yourTextView.setContentOffset(CGPoint(x: 0, y: -150), animated: true)
[self.textView setContentOffset:CGPointMake(0.f, -self.topLayoutGuide.length) animated:NO];
Swift 4のソリューション:
textView.textContainerInset = UIEdgeInsets.zero