iphone – 在取消隐藏视图时,growFirstResponder会降低app的速度

这是此问题的后续行动:
becomeFirstResponder slows down app

我遇到了与海报相同的问题,即调用becomeFirstResponder似乎会减慢我的应用程序(它可能会持续1-2秒).然而,虽然他们在显示警报的同时调用它,但我只是试图取消隐藏隐藏的视图并使其显示为某个字段作为第一响应者.就像是:

[self.dialogView setHidden:NO];
[self.dialogText becomeFirstResponder];

dialogView有一个层次结构,其中包含dialogText(我试图设置为第一响应者的UITextField)和其他一些项目.

这种缓慢只在第一次执行此代码时出现,即我们第一次尝试打开此对话框.在随后的尝试中,没有明显的缓慢(我认为这是因为dialogText在那时已经是第一响应者 – 我没有在任何地方使用resignFirstResponder?).

编辑:这里有一些额外的上下文代码,但不确定它是否真的会消除更多的光线.注意我现在正在动画取消隐藏此对话框视图,但行为也没有区别.我也已经将becomeFirstResponder调用移动到完成块(这里没有反映在代码中),这样至少对话框的外观不会延迟,但是在出现的对话框和出现的键盘之间仍然存在延迟.

- (IBAction)showEditDialog:(id)sender
{    
    [UIView animateWithDuration:0.3f animations:^() {
        self.maskView.alpha = 0.8;
        self.editDialogView.alpha = 1.0;
    } completion:^(BOOL finished) {
        if (finished) {
        }
    }];

   [self.editDialogText becomeFirstResponder];
}

最佳答案 首先,你正在进行视图切换吗?(例如view1(hide) – > view2(取消隐藏))

如果你在另一个视图上有你的dialogText(我猜是一个文本字段?),我建议你这样做:

[self.view bringSubviewToFront:view2];

第一

如果没有查看视图的分配方式以及textView或textField所处的位置,很难猜测是什么减慢了速度.

点赞