在目标c中,在main_queue上执行动画



我正在研究我公司中其他人制作的代码函数上的听众[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中,实际上您会为此而陷入困境(假设您在方案中打开了主线程检查器,那么您绝对应该(。

最新更新