2012-05-15 3 views
0

프린트 할 사용자 지정 NSView 하위 클래스가 있습니다. 나는 컨트롤러가 다음 코드 실행이 : 나는 브레이크 포인트를 설정하면NSPrintOperation이 drawRect를 호출하지 않습니다 :

MyCustomView *printableView = [[MyCustomView alloc] init]; 
NSPrintOperation *po = [NSPrintOperation printOperationWithView:printableView]; 
[po runOperation]; 

는,이 코드가 실행됩니다를하고, NSView의에서 사용자 정의 페이지 매김 방법 (knowsPageRange:rectForPage:)의 실행을 얻을 수 있지만, 뷰의 drawRect: 방법은 결코 호출되지됩니다 . 인쇄 대화 상자를 표시하지만 인쇄되는 것은 모두 빈 페이지입니다.

drawRect: 메서드가 호출되지 않는 이유는 무엇입니까? 제가해야 할 일종의 설치가 있습니까?

답변

2

NSView의 지정된 초기화 프로그램은 -initWithFrame:입니다. MyCustomView-init으로 초기화해도 -init의 구현은 [super initWithFrame:someRect]으로 전화해야합니다. 그렇게하고 있니?

다른 식으로 말하자면,보기에는 프레임 rect가 있습니까?

+0

예, init는'[super initWithFrame : someRect]'를 호출하지만, 그 프레임은 나중에 페이지 크기에 맞게'rectForPage :'에서 수정됩니다. –

+0

'-rectForPage :'중에 뷰 프레임을 수정하는 것이 이상하게 보입니다. 당신은 그것을 시작하기위한 적당한 프레임을주고 시도하지 않았습니까? 또한 사용자 정의 페이지 매김을 구현하지 않으려 고 시도한 적이 있습니까? –

+0

내 사용자 정의 하위보기에는 "frameSize"라는 속성이 있는데, 같은 이름의 기존 함수를 방해하여 0에 걸렸습니다. 귀하의 대답은 제가 문제를 찾는데 도움이되었습니다! 감사! –

관련 문제