Я включил версии и автосохранение в моем приложении на основе документов, поэтому теперь я могу видеть браузер версий (интерфейс, похожий на машину времени) для каждого из мои документы в OSX 10.7
+ (BOOL)autosavesInPlace{ return YES; }
У меня есть текстовое представление, и, как предлагалось в одном из видеороликов WWDC, сеанс 107, я хочу отключить ввод текста и т. д. при входе в браузер версии. Итак, я реализовал методы NSWindowDelegate:
- (void)windowWillEnterVersionBrowser:(NSNotification *)notification{
[myTextView setEditable:NO];
}
- (void)windowWillExitVersionBrowser:(NSNotification *)notification{
[myTextView setEditable:YES];
}
Теперь myTextView
в окне документа (текущего документа) в левой части экрана отключено, но документы в правой части (предыдущие версии) все еще отображаются курсор.
TextView не редактируется, но курсор отображается. Я также отключаю другие вещи и повторно включаю их в вышеуказанных методах, но написание кода в вышеуказанных методах, похоже, влияет только на текущее окно / документ документа, а не на окна / документ прошлых версий.
Возможно, у кого-то такая же проблема? Как я могу получить эту работу правильно? :)
РЕДАКТИРОВАТЬ :
Я искал образец кода WWDC для сеанса 107, но папка пуста. Я что-то пропустил или для этого сеанса нет образца кода?
Edit2 :
Примечание к выпуску Application Kit (Lion) говорит, что windowForSheet
вызывается при создании окон в правой части браузера версии:
- (NSWindow *)windowForSheet{
CustomWindow *win = (CustomWindow *)[super windowForSheet];
[win setUserInteractionEnabled:![self isInViewingMode]]; //disable stuff here
return win;
}
Но теперь, когда окно возвращается из версии Browser, взаимодействие с пользователем по-прежнему отключено. : (