Активируйте NSWindow с помощью NSUserNotification

Мой сценарий: у меня есть приложение, которое отправляет уведомление в Центр уведомлений OS X с помощью кнопки. Это уведомление сообщает мне, когда кто-то звонит в дверь нашего причала. Предполагается, что кнопка открывает окно NSWindow, которое показывает нашу док-камеру. Я могу заставить окно появиться с NSButton в приложении, но я не могу заставить его появиться с кнопкой уведомления.

Я пытался:

- (void)userNotificationCenter:(NSUserNotificationCenter *)center didActivateNotification:(NSUserNotification *)notification {
    if ([notification.title isEqualToString:@"Doorbell"]) {
        [DockCameraWindow makeKeyAndOrderFront:nil];
        NSLog(@"CameraWindow");
    }
    [[NSUserNotificationCenter defaultUserNotificationCenter] removeAllDeliveredNotifications];
}

Журнал появляется, а окна нет. Однако мое приложение принимает статус переднего приложения.


person cookdoeyl    schedule 31.10.2013    source источник
comment
Вы представитель NSUserNotificationCenter?   -  person CodaFi    schedule 31.10.2013
comment
Используйте [DockCameraWindow makeKeyAndOrderFront:self];   -  person Neha    schedule 31.10.2013
comment
У меня назначен делегат, и я знаю, что он работает с моим NSLog(@CameraWindow); стреляет.   -  person cookdoeyl    schedule 01.11.2013
comment
Я также попробовал self вместо nil. Я не работал.   -  person cookdoeyl    schedule 01.11.2013


Ответы (1)


Вы пробовали это :--

[NSApp activateIgnoringOtherApps:YES];
person Hussain Shabbir    schedule 31.10.2013
comment
Возможно, вам придется мне помочь. Я поместил это выше [DockCameraWindow makeKeyAndOrderFront:nil]; Это правильное место для него? - person cookdoeyl; 01.11.2013
comment
Уведомления будут отображаться только тогда, когда ваше приложение не является ключевым приложением. Если вы хотите, чтобы ваши уведомления отображались независимо от того, является ли ваше приложение ключевым или нет, вам нужно указать делегата для NSUserNotificationCenter и переопределить метод делегата userNotificationCenter:shouldPresentNotification:, чтобы он возвращал YES. - person Hussain Shabbir; 02.11.2013
comment
Вы реализовали это в своем коде - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { [[NSUserNotificationCenter defaultUserNotificationCenter] setDelegate:self]; } - (BOOL) userNotificationCenter: (NSUserNotificationCenter *) центр shouldPresentNotification: (NSUserNotification *) уведомление { return YES; } - person Hussain Shabbir; 02.11.2013
comment
Хусейн, твой код уже был в моем приложении. Мое уведомление отображается, когда я пытаюсь его активировать, оно частично не работает. Как указано выше, мой NSLog(@CameraWindow) срабатывает, но мой DockCameraWindow не появляется. - person cookdoeyl; 03.11.2013