簡體   English   中英

可可印刷:使打印請求滲透到整個窗口

[英]Cocoa Printing: Make print request percolate up to window

我是Cocoa印刷的新手,試圖弄清楚如何利用內置的NSView印刷。 我沒有在IB中編寫任何代碼或做任何事情來啟用打印功能,所以我剛剛在所有可可窗口中都內置了基本功能。

我的問題是,如果窗口中的NSTextField之一具有焦點,當我按Cmd-P進行打印時,它將嘗試僅打印該文本字段。 我希望該文本字段忽略打印請求,以便它可以滲透到窗口中。 我也有一個NSTableView ,我也希望如此。 如果選擇了一行,我希望NSTableView忽略打印​​請求,因此,就像文本字段一樣,它將最終向上傳遞到窗口(或窗口的NSView內容視圖)。

救命?

您可以更改設置“ Print…菜單項以在主nib文件中調用的方法。 默認情況下,它被設置為調用第一響應者的-print: 如果文本字段具有焦點,它將在該字段上調用print:這不是您想要的。

您可以改為在主控制器類中定義-printWindow:類的方法。 然后將“打印…”菜單項更改為調用第一個響應程序的-printWindow:方法。 然后,在該方法中,您可以將print:發送到主窗口的內容視圖。 代碼看起來像這樣:

。H:

@interface MDAppController : NSObject <NSApplicationDelegate> {
    IBOutlet NSWindow *window;
}

- (IBAction)printWindow:(id)sender;

@end

.m:

@implementation MDAppController

- (IBAction)printWindow:(id)sender {
    NSLog(@"[%@ %@]", NSStringFromClass([self class]), NSStringFromSelector(_cmd));
    [[window contentView] print:sender];
}

@end

顯示以下內容的示例項目:

http://www.markdouma.com/developer/PrintWindow.zip

關於您的評論,聽起來好像在第二個窗口/第二個窗口控制器中,第二個窗口控制器不在響應者鏈中,而您的主窗口控制器在響應者鏈中。 這可能是由於不同的原因。 您的主窗口控制器是應用程序委托嗎? 您可以嘗試確保將第二個窗口控制器設置為其窗口的delegate 希望這應該將窗口控制器插入響應者鏈。 否則,有關響應者鏈的更多信息,請參見《 可可事件處理指南:響應者鏈》

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM