2016-06-15 3 views
2

메뉴 막대에있는 앱이 있으며 단추를 클릭하면 NSPopover가 나타납니다.메뉴 버튼을 클릭 할 때 메뉴 막대 (NSPopover) 응용 프로그램을 활성화하려면 어떻게합니까?

모두 정상적으로 작동하지만 NSSearchField가 첫 번째 응답자가되기를 원하기 때문에 사용자는 상자에 직접 입력 할 수 있습니다.

그러나 아직 앱을 선택하지 않은 경우 앱이 작동하지 않습니다. 검색 상자가 활성화되어있는 것처럼 보일지라도 키보드 입력은 기술적으로 여전히 활성 창이므로 열려 있던 이전 앱으로 이동합니다.

이런 것들에 대해 몇 가지 질문을했지만, 모두 makekeyandorder와 같은 objc 메서드가 필요하거나 NSPopover에 적용되지 않는 것들만 필요합니다.

내 질문은입니다. 버튼을 누르면 응용 프로그램이 활성 응용 프로그램이되도록 할 수 있습니까?

나는 야생 추측을 가지고 있었고 NSApplication().sharedApplication().becomeFirstResponder()을 시도했지만 운이 없었습니다.

내가 할 수있는 또 다른 방법이 있다면, 완전히 놓친 것입니다. 그러면 알려주세요.

+0

안녕하세요, 스크린 샷을 추가 할 수 있습니까? – xmhafiz

+0

동영상이 더 좋았습니다. http://f.cl.ly/items/3L152r3F442G2L1P0y3w/Qwiki%20Bug.mov 처음 보았 듯이 메뉴 버튼을 처음 클릭하면 앱이 이전에 활성화되지 않았으므로, 필드는 첫 번째 응답자가되지 않습니다. 그러나 popover를 클릭하면 닫고 열 때 검색 필드가 첫 번째 응답자가 될 수 있습니다. –

+0

나는 그것이 어리석은 질문이라는 것을 알았다. 흥미롭게도 –

답변

2

최종적으로 직접 수정 했으므로 예상대로 매우 간단한 수정으로 밝혀졌습니다.

ViewControllers viewDidAppear() 메서드에서 NSApplication.sharedApplication().activateIgnoringOtherApps(true)을 호출해야했습니다.

모두 수정!

+0

은 xcode 8을 빌드하고 사용하려고하면 작동하지 않습니다. 다른 응용 프로그램에 초점이 맞춰진 것처럼 보입니다. 가서 그림을 ... – joe

+2

고마워! 훌륭하게 작동합니다. Swift 4에서는 구문이 약간 변경되었습니다. NSApplication.shared.activate (ignoringOtherApps : true)' – Savjee