Macの肝/iOSアプリ作りの気付き

Mac、Apple関係の情報サイトです

milk_btn_prev.png

|1|2|

milk_btn_next.png

iOSアプリ作りの気付き

textField、textViewのキーボードの閉じ方

delegateメソッドで処理する方法

実装ファイルのinterface部分で、それぞれのdelegateを定義する。
これによって、「returnキーが押された時」「textFieldを閉じた時」といったイベントが取得できる。

@interface DetailTableViewController () <UITextFieldDelegate, UITextViewDelegate>
@end


textFieldでreturnが押されたイベントが発生したら呼ばれるdelegateメソッド。
この中にキーボードを閉じるための処理を書く。

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

引数textFieldに、現在キーボードを表示させているtextFieldの情報が入っているので、それに対してresignFirstResponderメソッドを書くのが基本。
かわりに、現在開いているview(画面)に対して endEditingメソッドを書いてもいい。

[self.view endEditing:YES];


textView編集終了時、キーボードを隠し、元データを更新するdelegateメソッド。
textViewでreturnキーで編集終了にしてしまうと、文章の改行ができないので、それを避けたい。
編集終了がreturnキー以外で行われた場合のことも考えておく必要がある。

- (BOOL)textViewShouldEndEditing:(UITextView *)textView
{
[textView endEditing:YES];
return YES;
}


textViewはreturnキーを編集終了の合図に使えないので(そうすると文章の改行ができなくなる)、tableView上に載せたtextViewの場合、tableViewのスクロールがあったらキーボードを隠すようにするといい。
tableViewがなければ背景のviewからのtouchイベントを取得する方法もあるが、tableViewが画面いっぱいにある場合はtouchイベントが得られないようなので、カレンダー.appでもこのやり方をしてる。

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
[scrollView endEditing:YES];
}


tableViewの親クラスにscrollViewがあるので、上記のように引数のscrollViewを使うのがいいが、自分自身のviewに対して書くこともできる。

[self.view endEditing:YES]; //全部のキーボードを隠す場合

milk_btn_pagetop.png

milk_btn_prev.png

|1|2|

milk_btn_next.png