我有一個NSView
的子類,僅用於打印,它在打印時會執行一些相當複雜的操作,這可能會導致出現進度對話框。問題在於進度對話框繪製在打印輸出中而不是屏幕上。打印時可以顯示一個窗口嗎?
我嘗試了使用[NSGraphicsContext saveGraphicsState]
和[NSGraphicsContext restoreGraphicsState];
可能畫到窗口的托架位置,但這並不起作用。
我也試過
[self unlockFocus];
[self stuffThatMightDrawAWindow];
[self lockFocus];
,並沒有奏效。事實上,我發現在unlockFocus
之後,[NSView focusView]
仍然指向我的打印視圖,就好像unlockFocus
實際上沒有做任何事情。
我想我應該嘗試重新組織我的代碼,以便只有繪圖到打印輸出發生在我的打印視圖的drawRect:
方法中,但我很好奇這是否是唯一的解決方案。
我試圖重構做的rectForPage:
方法中的所有內容準備,在那裏我知道了頁碼的首位。現在,打印輸出看起來不錯,但如果我在rectForPage:
運行一個簡單的模式NSAlert
,警報是除了按鈕空白: