RBSplitView延迟了自动保存视图位置的重新加载

时间:2009-02-16 03:43:49

标签: cocoa user-interface

我真的很喜欢使用RBSplitView,它是NSSplitView的开源替代品,但我在我的发货应用程序中遇到问题,并且在新项目中再次体验它。

问题是我告诉RBSplitView通过给它一个自动保存名称来自动保存它的位置状态。当我的应用程序启动时,RBSplitView似乎不会保留已保存的状态,直到窗口被绘制后的一秒钟。

我花了一夜试图调试行为,但收效甚微。那里的任何人都使用这个lib并提出一些建议吗?

您可以将此快速影片播放到工作中的问题:

http://media.clickablebliss.com/billable/interface_experiments/rbsplitview_delayed_autosave_reload2.mov

3 个答案:

答案 0 :(得分:1)

我仍然无法弄清楚为什么会这样,但我确实有一个解决方法。

首先,确保您的主窗口在启动时不可见,然后在appDidFinishLaunching应用委托中添加以下内容:

[mainWindow performSelector:@selector(makeKeyAndOrderFront :) withObject:self afterDelay:0.1];

延迟是关键。如果你只是告诉窗口makeKeyAndOrderFront:我仍然看到问题。然而,只要它有一段时间它看起来不错。

答案 1 :(得分:0)

这可能正在发生,因为RBSplitView实例需要等到它的第一时刻才能将其帧设置为自动保存的值,这恰好在用户可以看到之后。这个0.0延迟技巧简单地延迟显示窗口,直到下一个runloop,这使得分割视图有机会进行其魔法(和其他视图),这样当用户看到窗口时,它已经很好而且性感。所以只需将延迟设为0.0就可以了。

答案 2 :(得分:0)

我在使用RBSplitView的应用中有类似但略有不同的解决方法。在applicationDidFinishLaunching:中,我在分割视图上调用adjustSubviews,然后在包含它的窗口上调用makeKeyAndOrderFront :.这似乎会在分割视图显示在屏幕上之前将其拆分。