1

プラグイン用に個別のプロセスがあり、各プラグインにNSView. CARemoteLayerServer/Client使用方法を調べましたIOSurfaceRefが、どちらも単一の図面ビューしか許可されていません。プラグインのビューには多くのサブビューが含まれる場合があり、メイン アプリケーションの一部であるかのようにイベントを受け取ることができます。これを可能にする方法はありますか?

4

1 に答える 1

2

NSViewプロセスの境界を越えて直接対話する方法はありません。つまりCARemoteLayerServer、単一のレイヤーだけでなく、レイヤー ツリーをサポートします。これは、レイヤーを使用して UI を構築する必要があることは間違いありませんがNSView、イベント処理の側面に関しては依然として有用であることを意味します。

NSViewsレイヤー ホスティングを作成し、NSViewそれに共有レイヤーを割り当てることができるため、クライアントとサーバーの両方に共有リモート レイヤーを含めることができます。はNSView、XPC 接続を介して他のプロセスに渡され、独自のNSView(共有レイヤーを含む) 解釈されるマウスおよびキーボード イベントをインターセプトできます。自分で実験したことがないので、これがどれほど速いかは完全にはわかりませんが、通常のビューとやり取りするのとほぼ同じくらい瞬時になると思います.

リモートレイヤーをもっと試してみたい場合は、素敵なサンプルプロジェクトとそれに付随する SO投稿をチェックしてみてください。

于 2013-02-04T05:38:25.887 に答える