У меня возникает странная проблема, когда я нажимаю на свое окно. Он подает в отставку основной и ключ. Затем я нажимаю на него, и на клик, который был нажат, не реагирует на щелчок мышью. Но второй щелчок вызывает реакцию на просмотр. Как будто во время первого щелчка окно не было ключевым, и щелчок заставил его стать ключевым и смог обработать второй щелчок.Cocoa NSApplication не активен, но принимает события мыши
Я подклассифицировал NSApplication
и перехватил sendEvent:
, чтобы узнать, было ли мое приложение получать события во время первого события щелчка, и это действительно так. Кроме того, я сбросил цепочку ответчиков и увидел, что действительно мой взгляд был в цепочке, но окно не было ключевым до второго щелчка. Я также заметил, что когда я получаю первый клик, приложение даже не активно. Как это возможно? Разве приложение не должно стать активным, когда оно получает событие мыши? Цыпленок/яйцо ...
Любые мысли/предчувствия?
Update: После прочтения Документов я нашел это:
мыши вниз события отправляются, когда пользователь нажимает кнопку мыши, когда курсор находится над объектом обзора. Если окно, содержащее представление, не является ключевым окном, окно становится ключевым окном и отбрасывает событие мыши. Тем не менее, представление может обойти это поведение по умолчанию, переопределяя метод acceptsFirstMouse: NSView для возврата YES.
То, что похоже на то, что происходит. Тем не менее, я попробовал переопределить acceptsFirstMouse:
и acceptsFirstResponder
, но безрезультатно. Мои взгляды все еще не «принимают первую мышь».
Спасибо!
Btw, моя политика приложения NSApplicationActivationPolicyAccessory .. –
Кроме того, preventWindowOrdering никогда не вызывается .. Еще рытья .. –
«активизируется» поведение вашего приложения может быть перекрываться подклассе, может быть, вы пропустили вызов ' [супер-что-то], 'где-то? –