2010-05-12 6 views
13

나는 다음과 같은 코드를 사용하여 NSWindow 표시를 열려고하고있다 :NSWindow를 열고 어떻게 창을 선택하고 초점을 맞 춥니 까?

NSWindowController *window = [[NSWindowController alloc] initWithWindowNibName:@"MainWindow"]; 
[window showWindow:nil]; 

창 괜찮 열리지 만 이전 창 여전히 MainWindow를하고 초점입니다. 주 창을 강제로 다음 코드를 시도하고 작동하지 않습니다. 창은 여전히 ​​비활성화 된 제목 표시 줄을 가지고 있으며, 키 이벤트를 수락하지 않는 등

[self.window makeKeyAndOrderFront:self]; 
[self.window makeMainWindow]; 

내가이 ShowWindow를 호출 한 후 창을 닫을 때 포커스를 잃을 이전 창을 얻을 수있을 것 같다 유일한 방법은 다음과 같습니다 [[NSApp mainWindow] close]와 함께;

아이디어가 있으십니까?

+4

왜 여기에 -1을 받았는지 모르겠지만 누구나 내가이 질문을 어떻게 개선 할 수 있는지 알려주셨습니까? – Luke

답변

13

makeKeyAndOrderFront:입니다. self.windowwindow이 동일한 객체를 참조합니까?

+0

감사하지만 여전히 작동하지 않습니다. 나는 [window makeKeyAndOrderFront : self]를 추가했다. showWindow 다음에 곧바로 전화하면 여전히 작동하지 않습니다. 이걸 다른 곳으로 불러야할까요? – Luke

+0

'makeKeyAndOrderFront :'가 올바른 방법입니다. 당신이 그것을 어디에서 부르던간에 중요하지 않습니다. 다른 문제가 있습니다. 예를 들어, 메인 윈도우가 모달이거나, 첫 번째 응답자 상태를 포기하기를 거부하는 것이 있습니다. –

+1

예, 펜촉에 문제가 있습니다. 솔루션에 대한 내 대답을 참조하십시오. – Luke

8

펜에 별도의 NSWindowController 개체가있는 대신 WindowController를 nib File Owner에 할당하여이 문제를 해결했습니다.

+0

이 질문에 하나의 포인트를 추가하고 싶습니다. 인터페이스 빌더의 NSWindow에 창 콘센트를 연결하는 것을 잊었습니다. 이것은 나를 위해 작동하지 않는 코드로 이끌었습니다. 그래서 이것을 읽는 누군가에게, 창 콘센트를 연결하는 것을 잊지 마십시오. 간단한 실수지만, 여러 해 동안 좌절감을 줄 수있는 사람 – Supertecnoboff

관련 문제