2011-07-27 103 views
6

我已經啓用了我的文檔基於應用程序的版本和自動保存所以現在我可以看到我的每個文件的版本瀏覽器(時間機器一樣的界面)在OSX 10.7版本的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不可編輯,但光標顯示。我也禁用其他的東西,並在上述方法中重新啓用它們,但在上面的方法中編寫代碼似乎隻影響當前文檔窗口/文檔而不是過去版本的窗口/文檔。

也許別人有同樣的問題? 如何正確地獲得這項工作? :)

編輯

我一直在尋找的會話107的WWDC示例代碼,但該文件夾是空的。我錯過了一些東西,或者沒有這個會話的示例代碼?

EDIT2

應用套件發佈說明(獅子)windowForSheet被稱爲創造版本瀏覽器右側的窗口時:

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

但現在當窗口變從版本瀏覽器返回用戶交互仍然被禁用。 :(

+0

如果在舊版本的文本視圖中的文本不可編輯,是否真的重要只需登錄與蘋果的錯誤? 。 –

+0

我知道它根本不會改變功能,但它看起來非常難看。另外,像textedit這樣奇怪的其他應用程序工作正常。可能與窗戶修復有關? – nacho4d

+0

你看過TextEdit源代碼(文件:/// Developer/Examples/TextEdit),看看它是如何處理這種情況的? –

回答

5

我終於找到了答案:

NSWindowDelegate方法被稱爲當前文檔的窗口(在版本瀏覽器的左側文件)和其他窗口可以通過覆蓋-[NSDocument windowForSheet];甚至更​​好的協調通過寫內部-[NSDocument windowControllerDidLoadNib:];類似

我貼一個短教程/筆記這裏:Versions in OSX 10.7