キーボードの表示に合わせて View の状態を変えたい
キーボードの表示に合わせて View の状態を変えたい事ってよくありますよね。
特に iPhone なんかだと画面も小さく、UITextField が画面下方にあることとかもよくあります。
こんな時、キーボードが表示されたタイミングで画面をスクロールさせて、キーボードの表示領域を避けるなどの調整をしたいわけです。
けっこうググれば直ぐに出てくる情報ですが、自分が忘れがちなのでメモ。
キーボード表示イベントを登録する
以下のようにしてキーボード表示イベントを獲得するよう宣言します。
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center addObserver:self
selector:@selector(keyboardWillChangeSize:)
name:UIKeyboardWillChangeFrameNotification
object:nil];
いちおう念のため、 dealloc
時にはイベント登録解除しておきます。
- (void)dealloc {
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center removeObserver:self
forKeyPath:UIKeyboardWillChangeFrameNotification];
}
イベントを受けるメソッドを実装する
上記の例に挙げたように、keyboardWillChangeSize:
メソッドを実装します。
- (void)keyboardWillChangeSize:(NSNotification *)notif {
//キーボードの表示領域を得る
NSValue *value = notif.userInfo[UIKeyboardFrameEndUserInfoKey];
CGRect keyRect = value.CGRectValue;
//
//キーボード表示領域に合わせて View を動かすなど...
//
}