2013-08-20 6 views
1

Есть ли какой-либо код/​​метод, чтобы поймать, когда клавиатура анимирована наполовину, чтобы показать/скрыть полностью? Мне нужно выполнить некоторые действия, когда клавиатура наполовину видна непосредственно перед вызовом уведомления на клавиатуре. Любая помощь действительно оценена. Спасибо заранее.UIKeyboard при скрытии/показе методов?

ответ

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]; 
} 
+0

Я думаю, вы могли бы сократить вдвое продолжительность анимации из пользовательского словаря UIKeyboardWillShowNotification, верно? –

+0

@AaronBrager Обновлено. Спасибо что подметил это! –

+0

Это помогло. Спасибо 0x7fffffff и Аарон. – Raj