Arhn - архитектура программирования

Выход из полноэкранного режима в Mountain Lion после смены делегата окна

Я создал свой проект из шаблона Xcode для недокументированного приложения Cocoa.

У меня есть пользовательское NSWindowController, которое после создания экземпляра при запуске получает окно по умолчанию (определенное в MainMenu.xib).

Если я оставлю окно делегата приложения как есть, я могу переключить полноэкранный режим с помощью command-F (установите -toggleFullscreen: в пункте меню) или я могу выйти из полноэкранного режима, нажав ESC.

Как только я установил свой оконный контроллер как delegate окна (мне это нужно, чтобы выполнить некоторые настройки OpenGL при входе / выходе из полноэкранного режима и т. д.), я все еще могу войти в полноэкранный режим, нажав command+F, но я больше не могу выйти из полноэкранного режима (за исключением command+tab для другое приложение или command+Q).

Кроме того, в документах Apple упоминается установка действия меню на -toggleFullscreen: и цели на nil. Как эта последняя часть выполняется в Interface Builder? (Я связал действие с -toggleFullscreen: первого ответчика)

Что я должен делать?


  • Рабочий стол Cocoa иногда может быть таким сложным. Каждый раз, когда я хочу что-то реализовать, у меня открывается 10 окон браузера в библиотеке разработчика. 15.09.2013
  • Вы можете ответить на свой вопрос, чтобы люди знали, что на этот вопрос дан ответ. 15.09.2013
  • Там я переместил редактирование в специальный ответ! 15.09.2013

Ответы:


1

Итак, я нашел проблему (размещение вопроса в SO кажется условием для поиска решения, всегда...)

Оскорбительной строкой была не установка делегата, а то, что я делал с окном после перехода в полноэкранный режим. В частности, как только я закомментировал следующую строку [window setStyleMask:NSBorderlessWindowMask]; в коде ниже:

- (void) windowDidEnterFullScreen:(NSNotification*) notification
{
    NSWindow* window = [self window];

    NSRect mainDisplayRect = [[NSScreen mainScreen] frame];
    [window setStyleMask:NSBorderlessWindowMask];
    [window setContentSize:mainDisplayRect.size];
    [window setLevel:NSMainMenuWindowLevel + 1];
    [window makeKeyAndOrderFront:self];

    NSRect windowFrame = [window frame];
    windowFrame.origin.x = 0;
    windowFrame.origin.y = 0;
    [window setFrame:windowFrame display:YES];
}

... исправлено ожидаемое поведение входа/выхода из полноэкранного режима.

15.09.2013
  • И вы знаете, что вы также можете пометить его как правильный, чтобы он отображался зеленым! :) 15.09.2013
  • +1 за первое предложение: D (и решение проблемы, конечно) 07.04.2014
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..