Я включил версии и автосохранение в своем приложении на основе документов, поэтому теперь я могу видеть браузер версий (интерфейс, похожий на машину времени) для каждого из моих документов в 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, но папка пуста. Я что-то пропустил или для этой сессии нет примера кода?
Редактировать2:
В Application Kit Release Note (Lion) говорится, что windowForSheet
вызывается при создании окон в правой части браузера версии:
- (NSWindow *)windowForSheet{
CustomWindow *win = (CustomWindow *)[super windowForSheet];
[win setUserInteractionEnabled:![self isInViewingMode]]; //disable stuff here
return win;
}
Но теперь, когда окно возвращается из браузера версии, взаимодействие с пользователем по-прежнему отключено. :(