UITextViewが途中から表示される問題。

結構長い間悩んだ問題です。

UITextViewを使って編集不可の長文(取説など)を表示したいのだけど、特に設定しないと、画面を開いた時に何故か途中からの表示になってしまった。
読んでもらう為に書いたので頭から表示したいのだが途中から表示される。

多分こちらのサイトの方も同じ問題と思われる。
iOS – UITextView が初期表示時に勝手にスクロールする – Qiita
xcodeのtextviewのレイアウトについて – textviewに長文を載… – Yahoo!知恵袋

実際こんな感じ。
スクリーンショット 2015-11-07 15.05.26

上記Qiitaのサイトの方はsetContentOffsetで頭から表示させることで解決された。
しかし、それだと途中まで読んでページ遷移して戻ってくるとまた頭からの表示になってしまう。
戻ってきたら続きから見たい。

それで悩んだ挙句2chで質問したらアッサリと解決策を提示してもらえた。

「contentOffsetを保持しておいて、viewDidAppearでセットすればいいよ。」

なるほどーって書いたコードがコチラ。

#import "infoViewController.h"
CGPoint content;

@interface infoViewController ()
@property (weak, nonatomic) IBOutlet UITextView *infoTextView;
@end

@implementation infoViewController

//中略

-(void)viewDidAppear:(BOOL)animated
{
    [_infoTextView setContentOffset:content animated:NO];
}

-(void)viewWillDisappear:(BOOL)animated
{
    content = _infoTextView.contentOffset;
}

@end

かなり乱暴な気がしますが(^_^;)、これで思ったように動いたのでとりあえずは良しとします。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です