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だと自分でいろいろカスタマイズ出来るけど、優しさが必要だな。