NSSavePanel 및 NSOpenPanel에서 액세서리보기에 문제가 있습니다.샌드 박스 적용 앱의 NSSavePanel 및 NSOpenPanel에 대한 액세서리보기의 이상한 동작
때때로 이러한 패널 중 하나를 열었을 때 액세서리보기가 작동하지 않습니다 (보기는 표시되지만 컨트롤은 사용 중지 된 것처럼 보임).
나는 패널을 표시하려면이 코드를 사용하고 있습니다 : 응용 프로그램 샌드 박스가 활성화되면
[openPanel beginSheetModalForWindow:appWindow completionHandler:openPanelHandler];
에만이 발생합니다.
많은 테스트를 거친 결과 나는보기가 잘못 배치되었다는 사실을 발견했습니다 (패널에 첨부되지 않음).
미션 컨트롤을 열고 마우스 포인터를 응용 프로그램 창 위로 이동하면 "보이지 않는"창이 천천히 보이고 선택하면 액세서리보기 (모든 제어 작업)를 제어 할 수 있지만 스크린 샷과 같이 패널을 열거 나 저장하십시오.
나는이 문제를 테스트하기 위해 단지 새로운 응용 프로그램을 만들려고하지만, 그것을 재현 할 수없는, 그래서 나는 내 응용 프로그램과 함께 할 수있는 뭔가가 가정합니다.내가 잘못하고있는 것일 수도 있습니다.
이 문제를 해결하기 위해 처음부터 모든 것을 코딩하고 싶지는 않습니다.
그냥 보조 노트, 나는 창을 닫을 때, 바로 창 전에 컨트롤에 대한 올바른 값으로 액세서리보기 깜박를 닫 편집. 응용 프로그램이 패널을 표시하기 위해 시간에보기를 추가하지 않는 것 같습니다.
업데이트 1
나는 액세서리보기로 사용되는 뷰를 서브 클래스와
- (void)viewWillMoveToSuperview:(NSView *)newSuperview
가 호출되는 것으로 나타났습니다하지만
- (void)viewDidMoveToSuperview
이 경우에도 호출되지 없구요 보기가 올바르게 표시되면 정상적인 동작입니까?
업데이트 2
나는 두 가지 방법이 호출되는 테스트 응용 프로그램에 - (void)viewDidMoveToSuperview
이 호출 할 필요가 있음을 확인.
또한 내 앱과 테스트 앱간에 약간의 차이가 있음을 확인했습니다. 내 응용 프로그램에서는 패널이 아래로 내려 가면서 테스트 응용 프로그램에서 패널이 "아래로 내립니다"(정확하게 설명하는 방법을 모르는 경우) 것처럼 보입니다. 패널이 나타나는 방식은 나와 관련성이 없으며 같은 방식으로 표시되지 않습니다.