Версии в OSX 10.7 - PullRequest
       3

Версии в OSX 10.7

6 голосов
/ 27 июля 2011

Я включил версии и автоматически сохранил в своем приложении на основе документов, так что теперь я могу видеть браузер версий (интерфейс, похожий на машину времени) для каждого из моих документов в 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;
}

Но теперь, когда окно возвращается из браузера версии, взаимодействие с пользователем все еще отключено.(

1 Ответ

5 голосов
/ 02 августа 2011

В конце концов я нашел ответ:

NSWindowDelegate методы вызываются для окна текущего документа (документ в левой части браузера версий), а другие окна можно координировать, переопределяя -[NSDocument windowForSheet]; илиеще лучше, написав что-то похожее внутри -[NSDocument windowControllerDidLoadNib:];.

. Я разместил короткое руководство / заметки здесь: Версии в OSX 10.7

...