nac*_*o4d 6 cocoa objective-c osx-lion
我在基于文档的应用程序中启用了版本和自动保存,所以现在我可以在OSX 10.7中看到每个文档的版本浏览器(类似时间机器的界面)
+ (BOOL)autosavesInPlace{ return YES; }
Run Code Online (Sandbox Code Playgroud)
我有一个textview,并且在WWDC视频的一个会话107中建议,我想在进入版本浏览器时禁用文本输入等.所以我实现了NSWindowDelegate方法:
- (void)windowWillEnterVersionBrowser:(NSNotification *)notification{
[myTextView setEditable:NO];
}
- (void)windowWillExitVersionBrowser:(NSNotification *)notification{
[myTextView setEditable:YES];
}
Run Code Online (Sandbox Code Playgroud)
现在,myTextView在屏幕左侧的文档(当前文档)窗口中被禁用,但右侧的文档(过去的版本)仍然显示光标.
textView不可编辑,但光标显示.我也禁用其他东西并在上面的方法中重新启用它们,但是在上面的方法中编写代码似乎只影响当前的文档窗口/文档而不是过去的版本windows/document.
也许其他人有同样的问题?我怎样才能正常工作?:)
编辑:
我正在寻找会话107的WWDC示例代码,但文件夹是空的.我错过了什么或者没有这个会话的示例代码吗?
编辑2:
应用程序工具包发行说明(Lion)说windowForSheet在创建版本浏览器右侧的窗口时调用:
- (NSWindow *)windowForSheet{
CustomWindow *win = (CustomWindow *)[super windowForSheet];
[win setUserInteractionEnabled:![self isInViewingMode]]; //disable stuff here
return win;
}
Run Code Online (Sandbox Code Playgroud)
但是现在当窗口从版本浏览器返回时,用户交互仍然被禁用.:(
最终我找到了答案:
NSWindowDelegate为当前文档的窗口调用方法(文档位于版本浏览器的左侧),其他窗口可以通过覆盖-[NSDocument windowForSheet];内部类似的内容来覆盖甚至更好-[NSDocument windowControllerDidLoadNib:];.
我在这里发布了一个简短的教程/注释:OSX 10.7中的版本
| 归档时间: |
|
| 查看次数: |
646 次 |
| 最近记录: |