0

私の OS X アプリは 10.9 - 10.11 をサポートしています。次のような印刷アクセサリ ビューを追加して、印刷操作にいくつかのオプションを追加しようとしています。

MyPrintView *printView = [[MyPrintView alloc] initWithData: [self myData]];
NSPrintOperation *printOperation = [NSPrintOperation printOperationWithView: printView];
NSPrintPanel *printPanel = [printOperation printPanel];
[printPanel addAccessoryController:[[MyPrintAccessory alloc] init]];
if (printOperation)
{
    [printOperation runOperationModalForWindow:_window delegate:_window didRunSelector:nil contextInfo:nil];
}

アクセサリ ビューはコントローラによって定義されます

@interface MyPrintAccessory : NSViewController <NSPrintPanelAccessorizing>

および xib ファイルで定義されたビュー。

El Capitanではすべてが期待どおりに完全に機能しますが、Yosemite と Mavericks では、印刷パネルではポップアップ ボタンでアクセサリを選択できますが、選択しても何も表示されず、アクセサリ ビューが表示されるスペースは空のままです。 . コンパイル時でも実行時でも、エラー メッセージは生成されません。

これを解決する方法、またはこの動作の原因を検索する方法についてのヒントはありますか?

4

2 に答える 2

0

私のアプリケーションは同じことを行い、10.10 で動作します

若干の違いがありますが、序文として: 私のアプリケーションは をNSDocumentベースにしたアプリケーションです。NSPrintInfo印刷するときは、からを取得NSDocumentし、印刷メソッド (質問に埋め込んだコード) にフィードします。

次のようになります。

[printView requestPrintWithPrintInfo:[doc printInfo]];

次に、 を呼び出す代わりに を呼び出し-printOperationWithView:、送信者からの-printOperationWithView:printInfo:を渡します。printInfo

Apple のドキュメントから、次の場合に呼び出す必要があります-printOperationWithView

/* アプリケーションのグローバル NSPrintInfo が適切な場合に使用するための、わずかな便利さ。これらの各メソッドは [NSPrintInfo sharedPrintInfo] を呼び出してから、上記の同名のメソッドを呼び出します。

とにかくうまくいくように思えますが、私が言ったように、それが私たちのコードの唯一の違いのようです

于 2016-04-11T14:44:15.940 に答える