UITextViewで複数行テキスト入力 | ゆぅさんのiPhone開発技術関連ブログ

ゆぅさんのiPhone開発技術関連ブログ

iPhone開発についての技術まわりのことを切り出して書き込みします。

UITextViewを使って複数行の入力をするときのめもめもお団子

UITextFieldは1行のテキスト入力ができるのですが、複数行のテキスト入力は
UITextViewが使えます。

まず、UITextViewにちょっと機能を加えたいので、MYTextViewというサブクラスを作る。


【MYTextViewの定義】


@interface MYTextView: UITextView{

}
@end

@implementation MYTextView


- (id)init{
self = [super init];
self.layer.borderColor = [UIColor blackColor].CGColor;
self.layer.borderWidth = 1;
UIButton* btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn.frame = CGRectMake(0, 0, 320, 40);
[btn setTitle:@"終了" forState:UIControlStateNormal];
[btn addTarget:self action:@selector(btnFinish:) forControlEvents:UIControlEventTouchUpInside];
self.inputAccessoryView = btn;
return self;
}

- (void)btnFinish:(id)btn{
[self resignFirstResponder];
}

@end



まず、

self.layer.borderColor = [UIColor blackColor].CGColor;
self.layer.borderWidth = 1;

この2行はビューのまわりに枠をつけます。
UITextViewは、UITextFieldみたいな枠をつける仕組みがないっぽいので、
ビューの機能で外枠をつけてあげます。
ビューについてるCALayerクラスにその機能があるのですが、このあたりはそのうち。
とりあえず、これで枠が付きます。
CALayerクラスは、QuartzCoreフレームワークに入っているので、
プロジェクトに組み込んでいなければ、組み込んでから、ソースのアタマに

#import <QuartzCore/QuartzCore.h>

を追加します。

つぎに、テキストを入力後、入力を終了させるためのボタンをキーボードの上に
配置します。
inputAccessoryViewにビューを設定すると、キーボードが表示されたときに、
キーボードの上にちょこんとのっかってくれます。

最後に、

- (void)btnFinish:(id)btn{
[self resignFirstResponder];
}

ボタンを押した時にキーボードを消す処理をいれます。

これで、クラスの作成はおしまいです。

あとは使うほうを組んで完成ですハンバーガー


UIView* oya = [[UIView alloc]init];
oya.frame = CGRectMake(0, 0, 320, 480);

MYTextView* tx = [[MYTextView alloc]init];
tx.frame = CGRectMake(10, 50, 300, 100);

[oya addSubview:tx];




$ゆぅさんのiPhone開発技術関連ブログ-その1