今天遇到一個問題
在 tableview
的 didSelectRowAtIndexPath:
調(diào)用 dismissViewControllerAnimated
時候,發(fā)現(xiàn)有明顯的延遲
如果雙擊的話則立即dismiss
2019-01-07 16:32:49.154877+0800 FF[1163:304337] ----->
2019-01-07 16:32:54.452650+0800 FF[1163:304337] ----->
在 didSelectRowAtIndexPath:
斷點驗證是否是在主線程啥纸,結(jié)果確實是在主線程
(lldb) po [NSThread isMainThread]
0x0000000000000001
(lldb) po [NSThread currentThread]
<NSThread: 0x2822934c0>{number = 1, name = main}
(lldb)
解決方法1
如下
重新把 dismissViewControllerAnimated:
添加到主線程
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
dispatch_async(dispatch_get_main_queue(), ^{
[self dismissViewControllerAnimated:YES completion:^(){
}];
});
}
2019-01-07 16:39:29.985855+0800 FF[1167:305510] ----->
2019-01-07 16:39:30.493599+0800 FF[1167:305510] ----->
解決方法2
如下
首先調(diào)用 deselectRowAtIndexPath:animated:
不要動畫
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[tableView deselectRowAtIndexPath:indexPath animated:NO];
[self dismissViewControllerAnimated:YES completion:^(){
}];
}
因此号杏,小心謹(jǐn)慎地推測,tableview
可能有小問題
一臉懵逼
不定期更新 不合適的地方 還請指點~ 感激不盡