2012-07-16 5 views
1

NSSavePanel 및 NSOpenPanel에서 액세서리보기에 문제가 있습니다.샌드 박스 적용 앱의 NSSavePanel 및 NSOpenPanel에 대한 액세서리보기의 이상한 동작

때때로 이러한 패널 중 하나를 열었을 때 액세서리보기가 작동하지 않습니다 (보기는 표시되지만 컨트롤은 사용 중지 된 것처럼 보임).

나는 패널을 표시하려면이 코드를 사용하고 있습니다 : 응용 프로그램 샌드 박스가 활성화되면

[openPanel beginSheetModalForWindow:appWindow completionHandler:openPanelHandler]; 

에만이 발생합니다.

많은 테스트를 거친 결과 나는보기가 잘못 배치되었다는 사실을 발견했습니다 (패널에 첨부되지 않음).

미션 컨트롤을 열고 마우스 포인터를 응용 프로그램 창 위로 이동하면 "보이지 않는"창이 천천히 보이고 선택하면 액세서리보기 (모든 제어 작업)를 제어 할 수 있지만 스크린 샷과 같이 패널을 열거 나 저장하십시오.

Screenshot

나는이 문제를 테스트하기 위해 단지 새로운 응용 프로그램을 만들려고하지만, 그것을 재현 할 수없는, 그래서 나는 내 응용 프로그램과 함께 할 수있는 뭔가가 가정합니다.

내가 잘못하고있는 것일 수도 있습니다.

이 문제를 해결하기 위해 처음부터 모든 것을 코딩하고 싶지는 않습니다.

그냥 보조 노트, 나는 창을 닫을 때, 바로 창 전에 컨트롤에 대한 올바른 값으로 액세서리보기 깜박를 닫 편집. 응용 프로그램이 패널을 표시하기 위해 시간에보기를 추가하지 않는 것 같습니다.

업데이트 1

나는 액세서리보기로 사용되는 뷰를 서브 클래스와

- (void)viewWillMoveToSuperview:(NSView *)newSuperview 

가 호출되는 것으로 나타났습니다하지만

- (void)viewDidMoveToSuperview 

이 경우에도 호출되지 없구요 보기가 올바르게 표시되면 정상적인 동작입니까?

업데이트 2

나는 두 가지 방법이 호출되는 테스트 응용 프로그램에 - (void)viewDidMoveToSuperview이 호출 할 필요가 있음을 확인.

또한 내 앱과 테스트 앱간에 약간의 차이가 있음을 확인했습니다. 내 응용 프로그램에서는 패널이 아래로 내려 가면서 테스트 응용 프로그램에서 패널이 "아래로 내립니다"(정확하게 설명하는 방법을 모르는 경우) 것처럼 보입니다. 패널이 나타나는 방식은 나와 관련성이 없으며 같은 방식으로 표시되지 않습니다.

답변

1

많은 것을 시도한 후에 문제는 프로젝트의 ARC (Automatic Reference Count) 설정과 관련이 있다고 결론을 냈습니다.

필자의 경우 프로젝트에서 ARC를 활성화 한 후 (결과 오류 및 경고를 처리 한 후) 모든 것이 완벽하게 작동하므로 프로젝트에서는 대상에 대해 ARC를 사용할 수 없었습니다.