2017-01-31 17 views
0

Я работаю над приложением NSMenuBar, а другое приложение NSMenuBar влияет на поведение дисплея моего приложения !? Точнее: приложение Adobe Creative Cloud. Когда я нажимаю на значок (креативное облако), появляется всплывающее окно. Впоследствии, когда я нажимаю на значок StatusBar, появляется мое меню, НО, все NSMenuItem, которые должны быть включены, внезапно отключены, а не интерактивны.Приложения NSMenuBar влияют (отключают) взгляды друг друга (NSMenuItem's)? BUG

Некоторые наблюдения:

При входе Включенные-состояние NSMenuItem, он записывает правильно, как быть включен, но это явно не отображающие, как включен (см скриншот), и нажав на него просто закрывает меню без выполнения связанного действия. Я делаю регистрацию с помощью следующего кода:

-(void)menuWillOpen:(NSMenu *)menu 
     { 
     dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC), 
      dispatch_get_main_queue(), 
      ^{ 
       NSLog(@"preferences menu-item is enabled: %hhd",[self.preferenceMenuItem isEnabled]); 
      }); 
    } 

NSMenu Я использую установлен в setAutoenablesItems: НЕТ.

Кроме того, Creative Cloud от Creative использует всплывающее окно. И когда он открывается, он явно парит над экраном-недвижимостью, которую использует мой NSMenu.

Когда я пытаюсь воспроизвести это с другими приложениями NSMenuBar (например, Wi-Fi от Apple или Bluetooth), все это работает. Нет проблем. Опять же, эти приложения не используют Popover-views, и они не полностью перекрывают пространство моего приложения.

Пожалуйста, смотрите эти скриншоты как иллюстрации:

Перед

enter image description here

Malicious Creative Cloud

enter image description here

После

enter image description here

Что мне здесь не хватает? Приложения не должны влиять друг на друга, как это право? Я медленно, но уверенно теряю рассудок. Любая помощь очень ценится! Thnx !!

ответ

0

Я нашел решение своей проблемы. Поэтому я надеюсь, что я помогу кому-то еще бороться с этим.

Я использовал мое основное меню файлов xib (со статусом) и ссылался на это меню, которое открывается при нажатии на значок состояния. Это заставило приложение сосредоточиться и отобразить два раза в одном и том же меню (хотя и не открыто одновременно), один под значком панели состояния, как предполагалось, и один на левой стороне рядом с символом яблока. Всякий раз, когда меню состояния было как-то дезактивировано, левое меню все еще работало, как если бы фокус был перенесен на этот. Для меня решение заключалось в том, чтобы отделить мое ссылочное меню от меню xib, перетащив его за пределы родительского меню. Это странно, потому что как-то это не видно больше в InterfaceBuilder, но это определенно все еще есть. Смотрите скриншоты:

ДО:

enter image description here

ПОСЛЕ:

enter image description here

 Смежные вопросы

  • Нет связанных вопросов^_^