UIKeyboardAnimationDurationUserInfoKey
является идентификатором строки const для ключа словаря, в котором хранится продолжительность анимации, поэтому изменить ее просто невозможно.
Один из способов заставить клавиатуру появляться без анимации - наблюдать уведомления клавиатуры и отключать анимацию, когда она должна появиться, а затем включать их снова. Это, конечно, отключает любую другую анимацию.
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(willShowKeyboard:)
name:UIKeyboardWillShowNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didShowKeyboard:)
name:UIKeyboardDidShowNotification
object:nil];
- (void)willShowKeyboard:(NSNotification *)notification {
[UIView setAnimationsEnabled:NO];
}
- (void)didShowKeyboard:(NSNotification *)notification {
[UIView setAnimationsEnabled:YES];
}
, а затем то же самое для UIKeyboardWillHideNotification/UIKeyboardDidHideNotification
уведомлений.