我怎样才能加速成为第一个响应者?

时间:2013-07-21 23:22:15

标签: ios objective-c uitextfield

第一次调用 becomeFirstResponder 时,它会变慢。仪器测量大约160毫秒...当它加载所有必须加载的所有东西以便将键盘放在屏幕上时,键盘就会出现!杀死大部分流畅的动画。

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

那么,我能以某种方式这样做吗?

1 个答案:

答案 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];
    });
});