2013-07-24 4 views
1

Мне нужно выполнить код после того, как я знаю, что клавиатура скрыта.Выполнить код после завершения метода

Ive смотрел и блоки, но я просто не понимая, как они работают достаточно, чтобы сделать это ...

Все, что я хочу сделать, это запустить [само hidekeyboard] тогда, когда это будет завершено (и клавиатура полностью скрыта), тогда я хочу позвонить делегату.

Каков наилучший способ справиться с этим и как?

ответ

1

Регистрация слушателя для UIKeyboardDidHideNotification с помощью NSNotificationCenter класса.

[[NSNotificationCenter defaultCenter] 
    addObserver:self 
     selector:@selector(keyboardHidden:) 
      name:UIKeyboardDidHideNorification 
     object:nil]; 

- (void)keyboardHidden:(NSNotification *)notif 
{ 
    // do stuff 
} 

(Не забудьте удалить наблюдателя в - dealloc так, что никакие сообщения ошибочно не будет отправлено освобождаться объектов.)

+0

Вы также можете позвонить removeObserver, вероятно, в willDidDisAppear: метод. – Geek

+0

@Akash Скорее в '-dealloc'. –

+0

В большинстве случаев это было бы решением, но я не могу использовать эти методы для этого, потому что они используются для других условий. Добавление в вызовы делегата к этим методам приведет к поломке вещей в других местах и ​​начнет становиться беспорядочным. Я должен был бы начать получать хакки с моими селекторами, и я не хочу идти по этой дороге – JMD

2
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(onKeyboardDidHide:) name: UIKeyboardDidHideNotification object:nil]; 

И в onKeyboardDidHide:

-(void)onKeyboardDidHide:(NSNotification *)notification 
{ 
    // execute what you want. 
} 
+0

Вы также можете вызвать 'removeObserver', вероятно, в методе' willDidDisAppear: '. – Geek

Смежные вопросы