代わりにUIKeyboardFrameBeginUserInfoKeyとUIKeyboardFrameEndUserInfoKeyuserInfo
を使用して、辞書からキーボードサイズを取得できます。
これらの2つのキーは、キーボードの表示/非表示アニメーションの開始点と終了点の両方でキーボードの位置とサイズを保持するNSValue
を含むインスタンスを返します。CGRect
編集:
明確にするために、userInfo
ディクショナリはNSNotificationインスタンスから取得されます。オブザーバーに登録するメソッドに渡されます。例えば、
- (void)someMethodWhereYouSetUpYourObserver
{
// This could be in an init method.
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(myNotificationMethod:)
name:UIKeyboardDidShowNotification
object:nil];
}
- (void)myNotificationMethod:(NSNotification*)notification
{
NSDictionary* keyboardInfo = [notification userInfo];
NSValue* keyboardFrameBegin = [keyboardInfo valueForKey:UIKeyboardFrameBeginUserInfoKey];
CGRect keyboardFrameBeginRect = [keyboardFrameBegin CGRectValue];
}
編集2:
また、メソッドのオブザーバーとして自分自身を削除することを忘れないでくださいdealloc
!これは、通知センターがオブジェクトが解放された後にオブジェクトに通知しようとしたときに発生するクラッシュを回避するためです。