У меня есть подкласс NSView
, который используется только для печати, и при печати он довольно сложный, что может привести к появлению диалогового окна прогресса. Проблема заключается в том, что диалог прогресса втягивается в распечатку, а не на экран.Могу ли я показать окно во время печати?
Я пробовал места для брекетинга, которые могли бы нарисовать окно с [NSGraphicsContext saveGraphicsState]
и [NSGraphicsContext restoreGraphicsState];
, и это не сработало.
Я также попытался
[self unlockFocus];
[self stuffThatMightDrawAWindow];
[self lockFocus];
и это не сработало. На самом деле я обнаружил, что сразу после unlockFocus
, [NSView focusView]
все еще указывает на мой вид печати, как будто unlockFocus
на самом деле ничего не сделал.
Я полагаю, что я должен попытаться реорганизовать свой код, чтобы в моем методе печати drawRect:
произошел только рисование на распечатке, но мне любопытно, является ли это единственным решением.
Я попытался рефакторинга сделать все содержание препарата в методе rectForPage:
, первое место, где я знаю номер страницы. Теперь распечатка выглядит хорошо, но если я бегу простой модальных NSAlert
во rectForPage:
, предупреждение пустым для кнопки, за исключением: