gpt4 book ai didi

objective-c - OSX 10.7 中的版本

转载 作者:太空狗 更新时间:2023-10-30 03:44:18 26 4
gpt4 key购买 nike

我在基于文档的应用程序中启用了版本和自动保存,所以现在我可以在 OSX 10.7 中看到我的每个文档的版本浏览器(类似时间机器的界面)

+ (BOOL)autosavesInPlace{ return YES; }

我有一个 TextView ,正如 WWDC 视频之一,第 107 节中所建议的,我想在进入版本浏览器时禁用文本输入等。所以我实现了 NSWindowDelegate 方法:

- (void)windowWillEnterVersionBrowser:(NSNotification *)notification{
[myTextView setEditable:NO];
}
- (void)windowWillExitVersionBrowser:(NSNotification *)notification{
[myTextView setEditable:YES];
}

现在,屏幕左侧的文档(当前文档)窗口中的myTextView被禁用,但右侧的文档(过去的版本)仍然显示光标。

textView 不可编辑,但光标显示。我也在上面的方法中禁用了其他东西并重新启用它们,但是在上面的方法中编写代码似乎只影响当前的文档窗口/文档而不影响过去版本的窗口/文档。

也许其他人也有同样的问题?我怎样才能正确地完成这项工作? :)

编辑:

我正在寻找 session 107 的 WWDC 示例代码,但该文件夹是空的。我是不是错过了什么,或者这个 session 没有示例代码?

编辑2:

Application Kit Release Note (Lion)windowForSheet 在创建版本浏览器右侧的窗口时被调用:

- (NSWindow *)windowForSheet{
CustomWindow *win = (CustomWindow *)[super windowForSheet];
[win setUserInteractionEnabled:![self isInViewingMode]]; //disable stuff here
return win;
}

但是现在当窗口从浏览器版本返回时,用户交互仍然被禁用。 :(

最佳答案

最终我找到了答案:

NSWindowDelegate方法为当前文档的窗口(版本浏览器左侧的文档)调用,其他窗口可以通过重写-[NSDocument windowForSheet]; 或在 -[NSDocument windowControllerDidLoadNib:]; 中编写类似内容甚至更好。

我在这里发布了一个简短的教程/注释:Versions in OSX 10.7

关于objective-c - OSX 10.7 中的版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6840288/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com