gpt4 book ai didi

macos - 替换 NSTouchBar 上的 ESC 按钮

转载 作者:行者123 更新时间:2023-12-03 16:34:57 26 4
gpt4 key购买 nike

我正在使用 Storyboard为我的应用程序构建一个 NSTouchBar

我想用其他东西替换 ESC 按钮。

像往常一样,没有医生告诉您如何做到这一点。

我在网上搜索过,发现了一些模糊的信息,例如

You can change the content of "esc" to something else, though, like "done" or anything, even an icon, by using escapeKeyReplacementItemIdentifier with the NSTouchBarItem.

但这太模糊了,难以理解。

有什么想法吗?

<小时/>

这就是我到目前为止所做的。

我在 Storyboard上的 NSTouchBar 添加了一个按钮,并将其标识符更改为 newESC。我以编程方式添加了这一行:

self.touchBar.escapeKeyReplacementItemIdentifier = @"newESC";

当我运行应用程序时,ESC 键现在不可见,但仍占据其在栏上的空间。原本应该取代它的按钮出现在它旁边。所以那个酒吧就是

`ESC`, `NEW_ESC`, `BUTTON1`, `BUTTON2`, ...

现在

`ESC` (invisible), `NEW_ESC`, `BUTTON1`, `BUTTON2`, ...

旧的 ESC 仍然占据着栏上的空间。

最佳答案

这是通过创建一个触摸栏项目来完成的,比方说一个包含 NSButtonNSCustomTouchBarItem,并将该项目与其自己的标识符相关联。

然后使用另一个标识符执行通常的逻辑,但添加之前创建的标识符作为 ESC 替换。

Swift 中的简单示例:

func touchBar(_ touchBar: NSTouchBar, makeItemForIdentifier identifier: NSTouchBarItemIdentifier) -> NSTouchBarItem? {

switch identifier {
case NSTouchBarItemIdentifier.identifierForESCItem:
let item = NSCustomTouchBarItem(identifier: identifier)
let button = NSButton(title: "Button!", target: self, action: #selector(escTapped))
item.view = button
return item
case NSTouchBarItemIdentifier.yourUsualIdentifier:
let item = NSCustomTouchBarItem(identifier: identifier)
item.view = NSTextField(labelWithString: "Example")
touchBar.escapeKeyReplacementItemIdentifier = .identifierForESCItem
return item
default:
return nil
}

}

func escTapped() {
// do additional logic when user taps ESC (optional)
}

我还建议为标识符进行扩展(类别),它可以避免使用字符串文字造成拼写错误:

@available(OSX 10.12.2, *)
extension NSTouchBarItemIdentifier {
static let identifierForESCItem = NSTouchBarItemIdentifier("com.yourdomain.yourapp.touchBar.identifierForESCItem")
static let yourUsualIdentifier = NSTouchBarItemIdentifier("com.yourdomain.yourapp.touchBar.yourUsualIdentifier")
}

关于macos - 替换 NSTouchBar 上的 ESC 按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44862210/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com