Есть ли какой-либо код/метод, чтобы поймать, когда клавиатура анимирована наполовину, чтобы показать/скрыть полностью? Мне нужно выполнить некоторые действия, когда клавиатура наполовину видна непосредственно перед вызовом уведомления на клавиатуре. Любая помощь действительно оценена. Спасибо заранее.UIKeyboard при скрытии/показе методов?
1
A
ответ
0
Для этого нет встроенного метода. Однако, как отметил @Aaron Brager, вы можете получить продолжительность анимации презентации клавиатуры, используя UIKeyboardAnimationDurationUserInfoKey
, из информации пользователя извещения UIKeyboardWillShowNotification
. Тогда все, что вам нужно сделать, это разделить это значение на 2 и задержать выполнение вашего действия на эту сумму. Вот пример:
- (void)keyBoardWillShow:(NSNotification *)notification
{
NSTimeInterval duration = [self keyboardAnimationDurationForNotification:notification];
double delayInSeconds = duration/2.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
});
}
- (NSTimeInterval)keyboardAnimationDurationForNotification:(NSNotification*)notification
{
NSDictionary *info = [notification userInfo];
NSValue *value = [info objectForKey:UIKeyboardAnimationDurationUserInfoKey];
NSTimeInterval duration = 0;
[value getValue:&duration];
return duration;
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyBoardWillShow:) name:UIKeyboardWillShowNotification object:nil];
}
- (void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil];
}
Я думаю, вы могли бы сократить вдвое продолжительность анимации из пользовательского словаря UIKeyboardWillShowNotification, верно? –
@AaronBrager Обновлено. Спасибо что подметил это! –
Это помогло. Спасибо 0x7fffffff и Аарон. – Raj