2009-11-12 1 views
1

IKPicutreTaker를 가져 와서 하나의 파일이 설정된 경우 그림을 저장하는 작은 OSX 코코아 응용 프로그램이 있습니다. applicationTouldateAfterLastWindowClosed : pictureTaker가 닫힐 때 응용 프로그램을 닫습니다. 이 중 하나를 설정할 때 (내가 원하는 사진을 선택했을 때) 또는 취소 버튼을 눌렀을 때 모두 제대로 작동하지만 창 왼쪽 상단의 빨간색 화살표를 클릭하면 응용 프로그램이 종료되지 않습니다. 창은 이렇게 닫힙니다. 의도 한 기능입니까 아니면 뭔가 잘못하고있는 것입니까 (플래그를 설정하지 않았습니까?). 또한이 버튼을 비활성화하는 방법이 있습니까?applicationShouldTerminateAfterLastWindowClosed : 빨간색 x를 사용하여 코코아 응용 프로그램을 닫을 때 작동하지 않는 것 같습니다.

답변

2

빨간색 버튼을 클릭해도 응용 프로그램이 닫히지 않으며, 그 동사는 명사와 함께 사용되지 않기 때문입니다. 빨간색 버튼은 해당 창을 닫습니다. 그것은 귀하의 신청서를 종료하지 않습니다. (응용 프로그램은 종종 Mac OS X에서 여러 개의 창이있을 수 있습니다.)

여기가 applicationShouldTerminateAfterLastWindowClosed:입니다. 사용자가 화면의 마지막 창을 닫을 때마다 (빨간색 버튼을 클릭하거나 파일에서 닫기를 선택하여) 메뉴 또는 다른 방법으로) NSApplication 객체는 applicationShouldTerminateAfterLastWindowClosed: 메시지를 대리인에게 보내어 응용 프로그램을 종료해야하는지 여부를 묻습니다. 대리자가 YES을 반환하여 메시지에 응답하면 응용 프로그램이 종료됩니다.

정확히 어떻게 사용하고 있습니까? applicationShouldTerminateAfterLastWindowClosed:. 만약 당신이 어떤 객체에 그것을 보내고 있다면, 질문을하기 때문에 ("마지막 창을 닫은 후에 응용 프로그램이 종료되어야합니까?") 그 대답을 무시하기 때문에 작동하지 않을 것입니다. 개체에 메서드를 구현했지만 해당 개체가 응용 프로그램의 대리자가 아니어도 작동하지 않으면 응용 프로그램 개체는 해당 메시지를 대리자로 보냅니다.

대리인에 메서드를 구현하고 사용자가 마지막 창을 닫을 때 응용 프로그램이 종료되는 것이 적절할 경우 YES을 반환해야합니다.

관련 문제