第一次调用 becomeFirstResponder 时,它会变慢。仪器测量大约160毫秒...当它加载所有必须加载的所有东西以便将键盘放在屏幕上时,键盘就会出现!杀死大部分流畅的动画。
然而第二次,它的速度非常快!它只需要2ms!
那么,我能以某种方式这样做吗?
答案 0 :(得分: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应用于背景中正在发生的一些“提升”之后确实如此。就我而言,这是一个滚动视图
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];
});
});