码迷,mamicode.com
首页 > 其他好文 > 详细

-[UIKeyboardTaskQueue waitUntilAllTasksAreFinished] may only be called from the main thread.【创建键盘监听事件,然后操作键盘(弹出、收回),结果在运行程序时出现如下错误(如有知道解决办法的朋友请留言探讨!)】

时间:2015-02-10 14:45:36      阅读:7054      评论:0      收藏:0      [点我收藏+]

标签:

 *** Assertion failure in -[UIKeyboardTaskQueue waitUntilAllTasksAreFinished], /SourceCache/UIKit_Sim/UIKit-3318.16.14/Keyboard/UIKeyboardTaskQueue.m:374

Terminating app due to uncaught exception ‘NSInternalInconsistencyException‘, reason: ‘-[UIKeyboardTaskQueue waitUntilAllTasksAreFinished] may only be called from the main thread.‘

*** First throw call stack:

(

0   CoreFoundation                      0x000000010d04cf35 __exceptionPreprocess + 165

1   libobjc.A.dylib                     0x000000010cce1bb7 objc_exception_throw + 45

2   CoreFoundation                      0x000000010d04cd9a +[NSException raise:format:arguments:] + 106

3   Foundation                          0x000000010c8fe5df -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 195

4   UIKit                               0x000000010bcea006 -[UIKeyboardTaskQueue waitUntilAllTasksAreFinished] + 151

5   UIKit                               0x000000010b776106 -[UIKeyboardImpl setDelegate:force:] + 470

6   UIKit                               0x000000010ba44a2d -[UIPeripheralHost(UIKitInternal) _reloadInputViewsForResponder:] + 929

7   UIKit                               0x000000010ba4cb54 -[UIPeripheralHost(UIKitInternal) _preserveInputViewsWithId:animated:reset:] + 504

8   UIKit                               0x000000010b6bad6c -[UIViewController _presentViewController:modalSourceViewController:presentationController:animationController:interactionController:completion:] + 602

9   UIKit                               0x000000010b6bbe99 -[UIViewController _presentViewController:withAnimationController:completion:] + 2858

10  UIKit                               0x000000010b6bdd81 __62-[UIViewController presentViewController:animated:completion:]_block_invoke + 132

11  UIKit                               0x000000010b6bdca5 -[UIViewController presentViewController:animated:completion:] + 229

12  BPMClient                           0x000000010b262bd8 __28-[LoginVC doLogin:password:]_block_invoke + 664

13  CFNetwork                           0x000000011273f935 __67+[NSURLConnection sendAsynchronousRequest:queue:completionHandler:]_block_invoke_2 + 155

14  Foundation                          0x000000010c92201f __NSBLOCKOPERATION_IS_CALLING_OUT_TO_A_BLOCK__ + 7

15  Foundation                          0x000000010c861db2 -[NSBlockOperation main] + 98

16  Foundation                          0x000000010c844384 -[__NSOperationInternal _start:] + 645

17  Foundation                          0x000000010c843f93 __NSOQSchedule_f + 184

18  libdispatch.dylib                   0x000000010d8c77f4 _dispatch_client_callout + 8

19  libdispatch.dylib                   0x000000010d8afb22 _dispatch_queue_drain + 1417

20  libdispatch.dylib                   0x000000010d8af432 _dispatch_queue_invoke + 235

21  libdispatch.dylib                   0x000000010d8b1fc1 _dispatch_root_queue_drain + 685

22  libdispatch.dylib                   0x000000010d8b35d9 _dispatch_worker_thread3 + 111

23  libsystem_pthread.dylib             0x000000010dc4b637 _pthread_wqthread + 729

24  libsystem_pthread.dylib             0x000000010dc4940d start_wqthread + 13

)

libc++abi.dylib: terminating with uncaught exception of type NSException

(lldb)

 

后面找到问题所在了:-[UIViewController presentViewController:animated:completion:]这个在跳转的时候应该将其添加到主任务队列中

dispatch_async(dispatch_get_main_queue(), ^{

                            [self presentViewController:[TabViewController new] animated:YES completion:^{

                                NSLog(@"登录完成,跳转到主界面");

                                NSLog(@"else _returnUrl:%@",_returnUrl);

                            }];

                        });

然后就没有报错了,(但个人认为对于-[UIKeyboardTaskQueue waitUntilAllTasksAreFinished] may only be called from the main thread这个问题还是没有解决!)关于队列这个问题个人水平有限,真正的原因还待深入的研究。或许-[UIKeyboardTaskQueue waitUntilAllTasksAreFinished] may only be called from the main thread这个问题也可以尝试将其监听处理相关的事件加入到主队列中,看能否解决,欢迎有兴趣的互相探讨。

-[UIKeyboardTaskQueue waitUntilAllTasksAreFinished] may only be called from the main thread.【创建键盘监听事件,然后操作键盘(弹出、收回),结果在运行程序时出现如下错误(如有知道解决办法的朋友请留言探讨!)】

标签:

原文地址:http://www.cnblogs.com/lawrence-h/p/4283575.html

(1)
(2)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!