2011-12-07 2 views
1

내 도크 메뉴는 항상 "Quit"및 다른 2 개의 메뉴 항목을 자동으로 추가합니다. 어떻게 차단합니까?코코아 도크 메뉴의 "Quit"메뉴 항목을 차단하는 방법

업데이트 :

정말 방법은// 블록을 삭제하지 않는 "종료"메뉴 항목을 리디렉션 할 수 있습니다. 은 지난 베드로의 권고를 사용 타격처럼 다른 사람

에게 도움이 희망

- (NSApplicationTerminateReply) applicationShouldTerminate : (NSApplication *) 보낸 사람 { 경우 (needPassword) { [자기 checkpassword를 : 자기] return NSTerminateCancel; } else { return NSTerminateNow; } }

- (무효) checkpassword를! (ID) 보낸 사람 { 경우 (passwordCorrect) {
needPassword; [[NSApplication sharedApplication] terminate : self]; } }

+0

잘못된 생각 ... 사용자가 원하는가? –

+0

그럴 가능성이 없습니다. –

+0

왜 이것을하고 싶습니까? 우리는 아마도 더 나은 해결책을 제안 할 수 있습니다. –

답변

5

사용자가 종료하라는 모든 가능한 방법을 가로 채려고하면 실패하게됩니다. (애플 이벤트 종료 기억 나니?)

응용 프로그램의 위임에 the applicationShouldTerminate: method을 구현하는 것이 더 쉽고 효과적 일 것입니다. 암호 패널을 올리고 NSTerminateLater을 반환하십시오. 그런 다음 사용자가 올바른 암호를 입력하거나 취소하면 a replyToApplicationShouldTerminate: message 응용 프로그램을 보냅니다.

어느 쪽이든 이미 추출한 명령 (메뉴 항목 등)을 끝내려면 다시 넣으십시오. 사용자가 정상적으로 Quit 명령을 호출하게하십시오. 그것은 전술 한 종결 절차가 실제로 종결 될지 여부를 결정하는 방아쇠를 당길 것이다.

+0

예, Peter, 맞습니다! 하지만 일부 앱이 해당 메뉴 항목을 죽인 사실을 발견했습니다. 예 : 구글 어스, 또는 "NOTATIONAL VELOCITY"라는 소스를 가진이 무료 앱은 어떻게 찾을 수 있습니까? 죄송합니다. 업로드 허가 이미지가 없습니다. –

+0

그리고 사용자가 종료 할 수 없도록하려면 신호 처리기를 설치하는 것을 잊지 마십시오. – sbooth

+0

@ JiulongZhao : Google 어스에는 종료 메뉴 항목이 있습니다.나는 Notional Velocity를 사용한 적이 없지만 왜 안되는 지 이유를 생각할 수 없다. 보다 일반적으로 Quit 메뉴 항목을 제거 할 이유가 없습니다. –

1

1) 4) 사용자 정의 메뉴

과 재산 "dockMenu을"연결) 자신의 도크 메뉴 만들기) 파일의 소유자 (NSApplication 인스턴스 3) 오른쪽 클릭을 MainMenu.xib 2를 엽니 다

학습 목적으로하고 싶다면 괜찮습니다. 그러나이 응용 프로그램을 판매하려면이 문제를 다시 고려해야합니다. 사용자는 도크 메뉴에 앱에 종료 버튼이 있다고 기대합니다.

+0

안녕하세요 Larus94 님, 방금 말씀하신 것을 좋아했지만 시스템은 항상 "Quit", "Show All Windows"및 "Hide"3 메뉴 항목을 도크 메뉴에 자동으로 추가합니다! 내 응용 프로그램은 암호로 보호되어 있으므로 종료 할 수 없습니다. –

+0

혹시이 문제에 대한 해결책을 찾았습니까? 도킹 메뉴에서 "Show All Windows"를 제거하는 것과 같은 효과를 내기 위해 노력 중입니다 ... – sac