SDL アプリケーションで NSTouchBar を作成しようとしていますが、レスポンダを NSWindow オブジェクトにアタッチする必要があります (SDL が Cocoa ウィンドウ システムに与える唯一のアクセスです)。
https://developer.apple.com/reference/appkit/nstouchbar
オブジェクトで NSTouchBarProvider プロトコルを明示的に採用する場合は、 NSTouchBar メソッド内で関連するキー値監視通知も明示的に送信する必要があります。これにより、システムはバーの変化に適切に対応できます。
それはどういう意味ですか、どうすればいいですか?通知をサブスクライブする方法についてのドキュメントはたくさんありますが、通知を送信する方法についてはわかりません。
今私は持っています:
@interface MyTouchBarResponder : NSResponder <NSTouchBarDelegate>
- (id)init;
- (NSTouchBar *)makeTouchBar;
- (nullable NSTouchBarItem *)touchBar:(NSTouchBar *)touchBar makeItemForIdentifier:(NSTouchBarItemIdentifier)identifier;
@property(strong, readonly) NSTouchBar *touchBar;
@end
ここで尋ねた以前の質問のコードを使用して、ウィンドウにアタッチしています: How to create an NSTouchBar from an NSWindow object?
touchBarResponder.nextResponder = window.nextResponder;
window.nextResponder = touchBarResponder;
しかし、コールバックが呼び出されることはありません (exit(0)
明確にするためにコールバックを入れています)。コードを SDL ライブラリに直接ハックすると、期待どおりに動作しますが、これは実行可能な恒久的な解決策ではありません。
ありがとうございました。