所以,只是一些上下文,我已经为 NSTextView 实现了一个包装 SwiftUI View ,一切都或多或少地工作正常,但我想在按下 Cmd + Enter 组合时添加一个监听器,到目前为止我得到了这个:
class Coordinator: NSObject, NSTextViewDelegate {
var parent: NSTextViewWrapper
init(_ parent: NSTextViewWrapper) {
self.parent = parent
}
func textView(_ textView: NSTextView, doCommandBy commandSelector: Selector) -> Bool {
if commandSelector == #selector(NSResponder.insertNewLine(_:)) {
let event = NSApp.currentEvent
// if event?.modifierFlags != NSEvent.ModifierFlags.command {
// Here I would like to trigger some action when the user is done editing the text field and wants to commit the result
// return true
// }
return false
}
return false
}
对于我的生活,我无法弄清楚如何做到这一点。
最佳答案
好的。使用@LeoDabus 输入,真的没有什么可改变的:
func textView(_ textView: NSTextView, doCommandBy commandSelector: Selector) -> Bool {
if let event: NSEvent = NSApp.currentEvent {
if event.modifierFlags.intersection(.deviceIndependentFlagsMask) == [.command] && event.keyCode == 36 {
print("caught [⌘ + ⏎]")
}
return true
}
return false
}
因此,在评论部分用晦涩的单行文字结束无用的时间。 🎉
关于Swift NSTextField,在 Cmd + Enter 上执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61806458/