UITextFieldで文字入力 | ゆぅさんのiPhone開発技術関連ブログ

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

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

UITextFieldで文字入力のめもめも音譜


1行の文字入力はUITextFieldを使います。
UIViewのサブクラスなので、ビューと同じように組み込んで使います。


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

UITextField* field = [[UITextField alloc]init];
field.frame = CGRectMake(10, 50, 300, 30);
[oya addSubview:field];



これで組み込みできます。
で表示してみると。。。。

まっしろ。。(まっしろなので画像省略・・・)

で、上のほうを押すと、キーボードが表示される。
テキストフィールドはちゃんと表示されているのだけど、デフォルトだと透明なのでみえない。


field.borderStyle = UITextBorderStyleRoundedRect;


1行加えると、おなじみのテキスト入力ぽい感じになります。

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

できたー!!
と思ったけど、ひとつ難点が。。。
キーボードが、消えない。。。

なので、テキストフィールドにデリゲートを設定します。
デリゲートっていうのは、テキストフィールドに何かあったときに、
こんなことしてほしい!っていうことを定義できる仕組みのことです。

こんな感じのコードを書いておきます。

@interface MyTextFieldDelegate: NSObject{

}
@end

@implementation MyTextFieldDelegate

- (id)init{
self = [super init];
return self;
}

- (BOOL)textFieldShouldReturn:(UITextField *)textField{
[textField resignFirstResponder];
return TRUE;
}


@end



MyTextFieldDelegateというクラスを定義します。
このクラス自体は、超基本のNSObjectクラスのサブクラスですが、
NSObjectのあとにって書いてます。
これを書くことで、UITextFieldのデリゲートになれます。


- (BOOL)textFieldShouldReturn:(UITextField *)textField{
[textField resignFirstResponder];
return TRUE;
}

このメソッド定義が今回のキモです。
このメソッドはデリゲート処理のなかで、Returnを押されたらこんなことしてほしい!
ってことを書いておきます。
resignFirstResponderを呼ぶとキーボードを消すことができるので、
これで、Returnを押したらキーボードを消す!が実現できます。

その上で、コードをこう書き換えます。

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

UITextField* field = [[UITextField alloc]init];
field.frame = CGRectMake(10, 50, 300, 30);
field.borderStyle = UITextBorderStyleRoundedRect;
MyTextFieldDelegate* d = [[MyTextFieldDelegate alloc]init];
field.delegate = d;
[oya addSubview:field];



これで完成!です星

やったねチョキ