1

私は現在、キヤノンEDSDKを使用して、ショット画像を直接印刷するデジタル一眼レフにアクセスするアプリケーションを開発しています。ここでの問題は、アプリケーションがNSPrintPanelまたはNSPrintOperationのいずれかを表示するまで、EDSDKとインターフェイスするコードが完全に機能することです。これらのいずれかが「runModalX」または「beginSheetWith」関数のいずれかを使用して表示され、再度終了した場合(CancelまたはOkのいずれも違いがないようです)、EDSDK内のコールバックは機能しなくなったようです。カメラとのインターフェース、ライブビュー画像のダウンロード、画像の撮影は引き続き可能ですが、コールバックに依存するアクションは機能しなくなりました。サンプルコード、NSPrintPanelの呼び出し方法は次のとおりです。

NSPrintInfo * printInfo = [NSPrintInfo sharedPrintInfo];
NSPrintPanel * printPanel = [NSPrintPanel printPanel];
NSInteger result = [printPanel runModalWithPrintInfo: printInfo];

これが私がNSPrintOperationを呼び出す方法です:

//view is a NSView with some data added, info is obtained as above
NSPrintOperation * printOp = [NSPrintOperation printOperationWithView: view printInfo: printInfo];
[printOp setShowsPrintPanel: NO];
[printOp runOperation]; 

私の考えでは、このパネルを表示すると、現在のアプリケーションで送信されたメッセージが混乱します。Xcodeによって生成されたCocoaアプリケーションテンプレートは、[ファイル]->[印刷]メニューを介してアプリケーションに印刷機能をすでに提供しています。印刷ウィンドウがこのように表示された場合、同じエラーが発生します。アプリケーションの実行中にアプリケーションの外部(Safariなど)で印刷ダイアログを表示した場合にのみ、EDSDKが混乱することはありません。

誰かがアイデアを持っていますか、ここでの問題は何である可能性がありますか、あるいはそれを解決する方法さえありますか?

補足:Canonsサンプルアプリケーション「CameraControl」を取得して上記のコードを追加すると、同じ問題が発生します。ライブビューは引き続き機能し、カメラとの対話は機能しますが、コールバックは呼び出されません(送信「写真を撮る」コマンドはシャッターも機能しますが、カメラはコンピューターが撮影した画像をダウンロードするのを待っているため、その後シャッターを切ることはできません)。

4

0 に答える 0