Я работаю над кодом, который был сделан другим парнем из моей компании, который ушел, и есть кое-что, чего я не понимаю, почему он это сделал: я настраиваю свои слушатели клавиатуры на функцию [self setKeyboardListenersInRegisterView]
код:
- (void)setKeyboardListenersInRegisterView {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(onKeyboardHideInRegisterView:)
name:UIKeyboardWillHideNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(onKeyboardShowInRegisterView:)
name:UIKeyboardWillShowNotification
object:nil];
}
Но он вызывает эту функцию здесь:
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
//listener for keyboard show/hide
[self setKeyboardListenersInRegisterView];
[self.studentUsernameTextField becomeFirstResponder];
[self.studentUsernameTextField addTarget:self.studentPasswordTextField action:@selector(becomeFirstResponder) forControlEvents:UIControlEventEditingDidEndOnExit];
});
Итак, вы, ребята, знаете, почему он вызывает функцию внутри main_queue, а не вне ее? Важно отметить, что селекторы уведомлений моей клавиатуры выполняют анимацию (просто настраивая вид на несколько пикселей вверх, чтобы увидеть, что пишет пользователь).