16

应用程序 TouchSwitcher 在光屏和音量项目旁边添加项目: https ://hazeover.com/touchswitcher.html 在此处输入图像描述

是否有解决方案将项目显示到触摸栏右侧区域的控制条中?

我在官方文档中找不到任何帮助...请帮助我!

4

2 回答 2

5

是我使用的。NSView将您选择的一个和一个标识符传递给controlStrippify()函数。我尝试使用 Swift 做完全相同的事情导致崩溃,欢迎移植 :)。灵感来自https://github.com/a2/touch-baer

@import Cocoa;
@import Foundation;

// See: https://github.com/a2/touch-baer
extern void DFRElementSetControlStripPresenceForIdentifier(NSString *string, BOOL enabled);

@interface NSTouchBarItem ()
+ (void)addSystemTrayItem:(NSTouchBarItem *)item;
@end

@interface NSTouchBar ()
+ (void)presentSystemModalFunctionBar:(NSTouchBar *)touchBar systemTrayItemIdentifier:(NSString *)identifier;
@end

void controlStrippify(NSView *view, NSString *identifier) {
  if (@available(macOS 10.12.2, *)) {
    NSCustomTouchBarItem *touchBarItem = [[NSCustomTouchBarItem alloc] initWithIdentifier:identifier];
    touchBarItem.view = view;
    [NSTouchBarItem addSystemTrayItem:touchBarItem];
    DFRElementSetControlStripPresenceForIdentifier(identifier, YES);
  } else {
    // Fail!
  }
}
于 2017-10-06T12:01:55.093 回答
5

反编译后发现/System/Library/PrivateFrameworks下一个叫DFRFoundation的框架里面有一些API,还有一个相关的方法DFRElementSetControlStripPresenceForIdentifier。我觉得很难进一步,所以我在这里回答只是为了让您知道用于此的 API 位于私有框架中。希望有一天有人会透露这些秘密。

于 2017-01-27T08:41:04.913 回答