2013-07-19 7 views
1

기능 NSBeginAlertSheet(...)에는 특히 didDismiss: 콜백이 필요한 모든 이벤트가 있습니다. 그러나 원하는 모든 창과 동일한 시트 작업을 수행 할 수 있어야하므로이 알림을 발견했습니다. : 시트 이제 애니메이션 폐쇄 및 수행 될 때마다 게시NSWindow를 시트로 표시하는 올바른 방법

NSWindowDidOrderOffScreenAndFinishAnimatingNotification

, 내 질문에 나는 그것을 사용할 수 있습니까? 아니면 더 좋은 방법이 있습니까?

나는 ARC를 사용하고 .xib의 창을 NSWindowController을 사용하여로드합니다.

전반적으로 필요한 것은 시트를 시트로 표시하고 모든 이벤트를 포착하는 것입니다.

+0

사용자 지정 프로토콜 및 위임의 경우처럼 보입니다. 손톱을 당기는 것처럼 쉽습니다. – timquinn

+0

프로토콜 및 위임을 사용하면 필요한 메서드를 사용자 지정 클래스에 추가하고 메시지를 받고 필요한 작업을 수행 할 대리자를 지정할 수 있습니다. 그것은 코코아 환경의 필수 요소입니다. 긴 자체 문서화 클래스 이름과 함께. – timquinn

답변

0

NSWindowDidEndSheetNotification 시트가 애니메이션으로 출력 될 때마다 게시됩니다.

- (void)beginSheet:(NSWindow *)sheet modalForWindow:(NSWindow *)docWindow modalDelegate:(id)modalDelegate didEndSelector:(SEL)didEndSelector contextInfo:(void *)contextInfo 

잘못 무엇

2

이 다음과 같아야합니다 (옵션) didEndSelector 호출

- (void)sheetDidEnd:(NSWindow *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo; 

이 모든 NSApplication 문서입니다.

- (void)endSheet:(NSWindow *)sheet returnCode:(NSInteger)returnCode 
- (void)endSheet:(NSWindow *)sheet 

그래서 당신은 당신이 endSheet:를 호출하기 전에 오른쪽으로 원하거나 sheetDidEnd: 방법으로 할 수 무엇이든 할 수있다 : 시트를 종료하기위한 방법은 두 가지가 있습니다.

편집 :

Here 다음 애니메이션을 [window orderOut:self]를 호출 한 후 완료 보여주는 예제 프로젝트이며, 당신이 원하는 일을 할 수 있습니다.

+0

나는 이것들을 안다. 그러나 내가 말했듯이 그 두 가지 방법은 시트가 애니메이션으로 올라가고 올라갈 때 셀렉터를 호출 할 것이고, 내가 찾고있는 것은 이벤트가 애니메이트 될 때 얻을 수있다 !!! 그것을 시도해보십시오. –

+0

@Mack 예제 프로젝트로 편집 해주세요 –

+1

오늘 나는 뭔가를 배웠습니다! 나도 몰라 - endSheet : returnCode : 동기 였어! 감사! 그것은 도왔다! +1 –