위의 설명에 따르면이 문제는 Powerbox의 세부적인 장면과 관련이있는 것으로 보입니다. 더 설명하려면 : 내 애플 리케이션은 샌드 박스가 호출 NSOpenPanel. NSOpenPanel의 완료 블록에서 (Xcode 중단 점)을 깨면 시스템 전체의 키보드 입력 손실이 발생합니다.
키보드 입력은 NSOpenPanel 호출 외의 중단 점에서 정상적으로 작동합니다. 이 코드 영역을 지난 후에 NSOpenPanel이 완전히 찢어지기 전에 (화면에서 사라지는) 후속 작업 (완료 보크에서 백그라운드에 대기)이 완료되는 것을 관찰했습니다. 내 가정 NSOpenPanel 화면에서 제거 될 때까지 (그리고 어쩌면 후에), Powerbox 키보드 컨트롤을 해제하지 않습니다.
실제 Powerbox 코드가 없으므로이 코드를 사용할 수 없기 때문에이 대부분을 전제로합니다.
인쇄 문을 사용하고 변수 검사기를 열어 코드를 실행하여 디버깅 문제를 해결했습니다. 마우스 입력이 계속 작동하므로 변수에 대해 마우스 오른쪽 버튼을 클릭하고 (2 버튼 마우스가있는 경우) 설명을 인쇄 할 수 있습니다.
도움 주셔서 감사합니다.
업데이트 이제 post-NSOpenPanel 액션 중 dispatch_after를 사용하여 실행을 지연하고 있습니다. 내 시스템에서는 1 초의 지연이 트릭을 수행하고 있습니다. 나는 임의의 지연을 추가하는 것을 정말로 좋아하지 않지만 이것이 효과가있는 것으로 보인다.
앱에서 석영 이벤트 탭이나 이와 비슷한 것을 사용합니까? –
아니요.하지만 조금 더 자세히 추적했습니다. 메뉴 이벤트에 의해 트리거 된 동작을 디버깅하려고합니다. 디버거는 메뉴 작업이 시작될 때 예상대로 작동하지만 내 작업은 beginWithCompletionHandler를 사용하여 NSOpenPanel을 엽니 다. - 완성 처리기를 중단하려고하자마자 키보드를 사용할 수 없습니다 (시스템 전체). 이 핸들러에서 트리거 된 모든 호출은 동일한 결과를 나타냅니다. 이 외에도 디버거는 다른 모든 응용 프로그램과 마찬가지로 예상대로 작동합니다. – greg
앱이 샌드 박스 처리됩니까? 그렇다면 열린 패널은 앱이 아닌 파워 박스에 의해 실행됩니다. 그것이 어떻게 상호 작용할지 모르겠습니다. –