我正在研究我公司中其他人制作的代码函数上的听众[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];
});
那么,你们知道他为什么在ain_queue内部而不是在它外部打电话给它?重要的是要说我键盘通知的选择器正在执行动画(只需将视图设置一些像素即可查看用户写的内容(。
如果您尝试以任何方式,形状或形式与接口对象交谈,而不是在主线程上,则您的做法错误。在Xcode 9中,实际上您会为此而陷入困境(假设您在方案中打开了主线程检查器,那么您绝对应该(。