iphone - 取消隐藏 View 时,becomeFirstResponder 会减慢应用程序的速度

标签 iphone ios uitextfield becomefirstresponder

这是对这个问题的跟进:becomeFirstResponder slows down app

我遇到了与该海报相同的问题,即调用 becomeFirstResponder 似乎会减慢我的应用程序(它可能会挂起 1-2 秒)。然而,虽然他们在显示警报的同时调用它,但我只是想取消隐藏隐藏的 View ,并让它作为第一响应者出现在某个字段中。像这样的东西:

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

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

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

编辑:这里有一些额外的上下文代码,但不确定它是否真的能说明更多问题。请注意,我现在正在动画取消隐藏此对话框 View ,但是行为没有什么不同。我也已经将 becomeFirstResponder 调用移动到完成 block 中(未反射(reflect)在此处的代码中),这样至少对话框的出现不会延迟,但是在对话框出现和键盘出现之间仍然存在延迟。

- (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];
}

最佳答案

首先,你是否在进行 View 切换?(例如 view1(hide)->view2(unhide))

如果您的 dialogText(我猜这是一个文本字段?)在不同的 View 中,我建议您这样做:

[self.view bringSubviewToFront:view2];

首先

如果不查看您的 View 是如何分配的以及您的 textView 或 textField 所在的位置,很难猜测是什么减慢了速度。

关于iphone - 取消隐藏 View 时,becomeFirstResponder 会减慢应用程序的速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12416065/

相关文章:

iphone:使用具有不同构建目标的不同图标?

ios - 点击按钮时获取用户位置

iphone - 如何在使用 AVAudioPlayer 的应用程序的多任务栏中启用音频控件?

ios - 使用 UITextBorderStyleNone 为 UITextField 设置填充

iphone - 更改应用程序名称会更改应用程序的链接吗?

ios - Xcode 4.6.3 错误 - .m 文件无法打开或打开时出现问题

iphone - 属性文本中的 NSXMLParser 引号

iPhone 奇怪的错误

ios - 将文本移动到 UITableViewCell 中的下一个文本字段

ios - 如何在警报 View 中存储文本字段中的 uitextfield 值?