4

这是对这个问题的一种跟进:becomeFirstResponder 减慢应用程序的速度

我遇到了与该海报相同的问题,即调用 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];
}
4

1 回答 1

2

firstly, are you doing view switching?(e.g view1(hide)->view2(unhide))

If you having your dialogText(which I guess is a textfield?) on a different view, I suggest you do:

[self.view bringSubviewToFront:view2];

first

It's hard to guess what slows it down without looking at how your views are allocated and where your textView or textField are sitting on.

于 2012-10-17T22:07:05.730 回答