Ich habe eine Unterklasse von NSView
nur für den Druck verwendet, und es macht einige ziemlich komplizierte Sachen während des Druckens, die einen Fortschrittsdialog erscheinen kann. Das Problem besteht darin, dass der Fortschrittsdialog nicht auf dem Bildschirm, sondern auf dem Ausdruck angezeigt wird.Kann ich während des Druckens ein Fenster anzeigen?
Ich versuchte Haltepunkte, die in ein Fenster mit [NSGraphicsContext saveGraphicsState]
und [NSGraphicsContext restoreGraphicsState];
zeichnen könnte, und das hat nicht funktioniert.
Ich habe auch versucht
[self unlockFocus];
[self stuffThatMightDrawAWindow];
[self lockFocus];
und das hat nicht funktioniert. In der Tat fand ich, dass direkt nach der unlockFocus
, [NSView focusView]
immer noch auf meine Druckansicht zeigt, als ob die unlockFocus
tat eigentlich nichts.
Ich vermute, ich sollte versuchen, meinen Code zu reorganisieren, so dass nur Zeichnung auf den Ausdruck in meiner Druckansicht drawRect:
Methode passiert, aber ich bin neugierig, ob das die einzige Lösung ist.
Ich habe versucht, Refactoring alle Inhalte der Zubereitung in der rectForPage:
Methode zu tun, der erste Ort, an dem ich die Seitenzahl kennen. Jetzt sieht der Ausdruck in Ordnung, aber wenn ich eine einfache modale NSAlert
während rectForPage:
laufen, ist die Warnung leer bis auf die Schaltfläche: