UITextViewを使うとUITextFieldと違って完了ボタンが改行ボタンになっている。完了ボタンに変更もできるけど、改行もしたいからUIToolbarを使用して、そこに完了ボタンを配置してみる。
-(void) init
{
toolBar = [[[UIToolbar alloc] init]];
// ツールバーを配置する場所
[toolBar setFrame:CGRectMake(0, 220, rootViewController.view.bounds.size.width, 44)];
[hogeViewController.view addSubview:toolBar];
// スペーサの生成
UIBarButtonItem *spacer = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:
UIBarButtonSystemItemFlexibleSpace
target:nil action:nil];
// 完了ボタンの生成
UIBarButtonItem *doneButton =
[[[UIBarButtonItem alloc]initWithTitle:@"Done"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(onDoneButton)]autorelease];
// スペーサを入れて左端に完了ボタンを配置する
[toolBar setItems:[NSArray arrayWithObjects:spacer, spacer, doneButton, nil]];
}
// 完了ボタンがおされたとき
-(void)onDoneButton
{
// キーボードを隠すなどの完了時の処理
}
キーボートが日本語とかになっていると、予測変換?のバーが出てきてせっかく作ったツールバーが隠れてしまう。。
ツールバーをキーボードのサイズで動的に変更することで解決しました。
方法は、ここに書かれているTextfiledを動的に変更する方法をツールバーに適応させればOK!!
UITextViewだと自分でいろいろカスタマイズ出来るけど、優しさが必要だな。