UITextViewとUIToolbar

Pocket
LINEで送る

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

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください