第一次调用firstFirstResponder时,它的速度很慢.仪器测量大约160毫秒…当它加载所有必须加载的所有东西以便将键盘放在屏幕上时,键盘就会出现!杀死大部分流畅的动画.
然而,第二次,它的速度非常快!它只需要2ms!
那么,我能以某种方式这样做吗?
最佳答案 使用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];
});
});