2010年9月2日木曜日

編集が終わったらキーボードを閉じる

iPhoneのソフトウェアキーボードを閉じる方法です。

UITextFieldにフォーカスが当たるとソフトウェアキーボードが出てきます。
キーボードの改行ボタンを押すと、UITextFieldにUIControlEventEditingDidEndOnExitイベントが飛んできますので、それを捕まえてUITextFieldからフォーカスを外してあげます。
フォーカスが外れるとキーボードが閉じ、めでたしめでたし。

コードはこんな感じです。resignFirstResponderメソッドを呼ぶことでUITextFieldからフォーカスを外してます。

- (void)viewDidLoad {
    UITextField *textField = [[[UITextField alloc]
                               initWithFrame:CGRectMake(10, 10, 200, 31)]
                              autorelease];
    textField.borderStyle = UITextBorderStyleRoundedRect;
    [textField addTarget:self
                  action:@selector(editingDidEnd:)
        forControlEvents:UIControlEventEditingDidEndOnExit];
    [self.view addSubview:textField];
}

- (void)editingDidEnd:(id)sender {
    UITextField *textField = (UITextField *)sender;
    [textField resignFirstResponder];
}

Interface Builderで同じ事を行う場合は、UITextFieldの「Did End on Exit」というイベントにアクションを設定してあげます。

0 件のコメント:

コメントを投稿