为什么我的Cocoa NSWindow花了这么长时间才变得活跃?

时间:2015-02-08 08:47:05

标签: cocoa swift nsview nswindow

我的应用程序启动,窗口显示(所有控件都在物理上)处于非活动状态(控件变灰并且对键/鼠标无效)。窗口变为活动状态需要三到五秒钟?当我从另一个应用程序切换回此应用程序时,会出现相同的模式。

修改

我已在各种Window,Delegate&中添加了日志记录。控制器方法确定减速发生的确切位置,并且所有这些都在减速之前运行

1. 2015-02-08 15:22:16.032 Grid[40199:5354843] ScrollGridViewContainer.awakeFromNib start
2. 2015-02-08 15:22:17.244 Grid[40199:5354843] ScrollGridViewContainer.awakeFromNib end
3. 2015-02-08 15:22:17.247 Grid[40199:5354843] contentViewController.viewDidLoad started
4. 2015-02-08 15:22:17.247 Grid[40199:5354843] contentViewController.viewDidLoad ended
5. 2015-02-08 15:22:17.262 Grid[40199:5354843] WindowController.windowDidLoad start
6. 2015-02-08 15:22:17.263 Grid[40199:5354843] WindowController.windowDidLoad end
7. 2015-02-08 15:22:17.303 Grid[40199:5354843] Window.makeKeyAndOrderFront start
8. 2015-02-08 15:22:17.316 Grid[40199:5354843] windowDidUpdate
9. 2015-02-08 15:22:17.975 Grid[40199:5354843] Window.makeFirstResponder start
10. 2015-02-08 15:22:17.975 Grid[40199:5354843] GridCell: 1, 1 .becomeFirstResponder
11. 2015-02-08 15:22:17.975 Grid[40199:5354843] self.nextResponder
12. 2015-02-08 15:22:17.976 Grid[40199:5354843] firstResponder is: 1, 1
13. 2015-02-08 15:22:17.976 Grid[40199:5354843] Window.makeFirstResponder end
14. 2015-02-08 15:22:20.692 Grid[40199:5354843] Window.makeKeyAndOrderFront end
15. 2015-02-08 15:22:20.742 Grid[40199:5354843] windowDidUpdate
16. 2015-02-08 15:22:20.772 Grid[40199:5354843] applicationDidFinishLaunching
17. 2015-02-08 15:22:20.773 Grid[40199:5354843] windowDidUpdate
18. 2015-02-08 15:22:21.216 Grid[40199:5354843] windowDidBecomeMain
19. 2015-02-08 15:22:21.238 Grid[40199:5354843] windowDidBecomeKey
20. 2015-02-08 15:22:21.322 Grid[40199:5354843] windowDidUpdate
21. 2015-02-08 15:22:25.117 Grid[40199:5354843] windowDidUpdate

在日志项目14上,它显示窗口处于非活动状态。 (这是在调用super 之后退出Window.makeKeyAndOrderFront方法

仅在上面的日志项目21中,我的应用程序的窗口实际上变为活动状态(我在此时将鼠标移到窗口上以触发" windowDidUpdate")。

我要解决的下一个问题将是13到14之间发生的事情,但只是试图一次找出一件事......除非他们相关。

更新

[以下是Ken Thomases关于控制台日志在13到14之间发生的事情的评论]

2015/02/08 5:30:40,963 PM WindowServer [114]:disable_update_timeout:应用程序强制禁用UI更新" Grid"超过1.00秒。服务器已重新启用它们。

2015/02/08 5:30:43,468 PM WindowServer [114]:common_reenable_update:UI更新最终由应用程序重新启用"网格" 3.61秒后(服务器在1.00秒后强制重新启用它们)

上面的出现与我试图显示的NSTextField对象的网格大小有关。低于某个网格大小,它不会发生。

0 个答案:

没有答案