Размер клавиатуры можно получить из словаря userInfo
, используя UIKeyboardFrameBeginUserInfoKey и UIKeyboardFrameEndUserInfoKey вместо.
Эти две клавиши возвращают экземпляр 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
методе! Это сделано для того, чтобы избежать сбоя, который может возникнуть, когда центр уведомлений пытается уведомить ваш объект после его освобождения.