【iPhone SDK】UITextViewの入力フォーカス関連

UITextViewを含む画面を表示時にテキストがあらかじめセットされており、
いきなりUITextViewにフォーカスがある状態にする。
そして入力カーソルは文字列の先頭にある。

という案件を満たすため、調べた結果をメモします。

100枚390円からのデータ入稿専門店「激安名刺ドットコム」
・初期フォーカスを設定する

UITextView* textView = [[UITextView alloc] initWithFrame: CGRectMake(x, y, w, h)];
[textView becomeFirstResponder]; // 初期フォーカス

becomeFirstResponderを指定することで表示された瞬間にキーボードが表示されていると思います。

・入力カーソルを先頭に移動させる
通常、初期フォーカスを入れただけだと
既に入力されている文字列の最後尾にフォーカスがあります。
これを先頭に移動させるためにはデリゲートを使います。

textView.delegate = self;   // デリゲート

これを定義した上でデリゲート関数を作成します。

- (BOOL) textViewShouldBeginEditing: (UITextView*) textView {
 // 構造体を生成
 NSRange range;
 // 先頭
 range.location = 0;
 // 選択文字数0
 range.length = 0;
 
 textView.selectedRange = range;
 
 return YES;
}

編集開始していいのかを返すデリゲート関数です。
フォーカスが入った瞬間に呼ばれる関数なので、ここでNSRangeの構造体で先頭を指定し、テキストビューにセットすることで実現できました。

100枚390円からのデータ入稿専門店「激安名刺ドットコム」

この記事へのコメント


この記事へのトラックバック