“wait_fences:未收到回复:10004003”?由于以下代码行,我第一次(也是第一次)加载了我的视图时出现了这个神秘的错误:- (void)viewWillAppear:(BOOL)animated{
[textField becomeFirstResponder];}有一个明显的(约3 - 4秒,甚至在模拟器上)延迟,因为这使我的应用程序感到反应迟钝。有谁知道如何解决这一问题?我在Apple的网站上找不到任何文档,或者在Google或Google上找到任何解决方案。奇怪的是,如果我把线放入-viewDidAppear:而不是-viewWillAppear:; 也就是说,不是打印错误仅在第一次键盘显示永不再,该错误不打印第一次,但之后每次。这给我带来了很大的麻烦。
3 回答
白板的微信
TA贡献1883条经验 获得超3个赞
覆盖-viewDidAppear:
,而不是-viewWillAppear
,并确保打电话[super viewDidAppear:]
。当您不在屏幕上时(“将出现”),您不应该执行动画。和-viewDidAppear:
文档说明,你必须调用super
,因为他们有自己的事情要做。
慕雪6442864
TA贡献1812条经验 获得超5个赞
我很快就遇到了类似的错误:
解散模态视图
更新主视图
提出一个新的模态视图
我注意到我只是在模拟器中而不是在设备上。另外,我陷入了无限循环。
我的解决方案是推迟新模态视图的呈现。似乎快速更新视图层次结构导致Apple的代码中出现了一些竞争条件。
考虑到这一点,试试这个:
- (void)viewDidAppear:(BOOL)animated{ [super viewDidAppear:animated]; [textField performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:0.1]; }
您可能在为尚未在屏幕上显示UITextField的键盘时遇到问题。这可能会导致类似我的问题。
此外,为了以防万一,您在呈现键盘之前暂停给予层次结构更新时间。
希望这可以帮助。
四季花海
TA贡献1811条经验 获得超5个赞
检查您是否只与主线程上的UI进行交互。我wait_fences: failed to receive reply: 10004003
坐在那里等待UIAlertView显示大约5秒,因为相关代码是在后台线程上执行的。您可以通过将代码放入块并将其发送到主线程来确保:
dispatch_async(dispatch_get_main_queue(), ^{ if (!success) { // Inform user that import failed UIAlertView * importFailedAlert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"ErrorTitle5", @"Import failed") message:NSLocalizedString(@"Error5", @"Something went wrong") delegate:nil cancelButtonTitle:NSLocalizedString(@"OK", nil) otherButtonTitles:nil]; [importFailedAlert show]; }});
- 3 回答
- 0 关注
- 494 浏览
添加回答
举报
0/150
提交
取消