ios - 我怎样才能加快 becomeFirstResponder 的速度?

标签 ios objective-c uitextfield

第一次调用 becomeFirstResponder 时,速度很慢。 Instruments 测量大约 160 毫秒......当它完成加载所有它必须加载的东西以便在屏幕上显示键盘时,键盘就会出现!杀死大部分流畅的动画。

然而,第二次,它的速度非常快!只需 2 毫秒!

那么,我能以某种方式做到这一点吗?

最佳答案

使用 GCD

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// heavy lifting here
    dispatch_async(dispatch_get_main_queue(), ^{
        [someTextField becomeFirstResponder];
    });
});

这最初并没有按预期工作,但在将 GCD 应用于后台发生的某些“提升”后,它确实工作了。就我而言,这是一个 ScrollView

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// heavy lifting here
    dispatch_async(dispatch_get_main_queue(), ^{
        [_tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];
    });
});

关于ios - 我怎样才能加快 becomeFirstResponder 的速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17777970/

相关文章:

objective-c - 我需要在 Nib 的文件所有者中为哪些顶级对象创建 Outlest,以便减少内存问题?

ios - textFieldShouldReturn 忽略变量

iphone - 如何将焦点设置到 iPhone 中的下一个 uitextfield?

ios - UITextField——观察 selectedTextRange 的变化?

ios - 当我单击TableView单元格时, TableView 崩溃

html - ios webview css 和超链接在容器中的本地 html 文件中不起作用

ios - 使用 swift3 为 xib 文件中的按钮提供操作

ios - 在标签栏上添加 UIVisualEffectView

ios - 如何加载 6.0 之前的默认排行榜?

iphone - 在模拟器中无法在iPhone 3GS中正常工作的声音