gpt4 book ai didi

cocoa - 如何将关键事件发送到没有快速焦点的 NSTextField

转载 作者:搜寻专家 更新时间:2023-10-31 23:04:13 24 4
gpt4 key购买 nike

我有一个包含 NSTableView 和 NSTextField 的 View 。 TableView 具有焦点。我想使用文本字段作为表格 View 的过滤器。有什么方法可以将 TableView 捕获的按键事件发送到 NSTextField?

这是我拥有的 keyDown 函数,我想将 theEvent 发送到 switch 语句的默认处理程序中的文本字段。

override func keyDown(theEvent: NSEvent) {
let s = theEvent.charactersIgnoringModifiers!
let s1 = s.unicodeScalars
let s2 = s1[s1.startIndex].value
let s3 = Int(s2)
switch s3 {
case NSUpArrowFunctionKey:
self.previous()
return
case NSDownArrowFunctionKey:
self.next()
return
default:
// this appends the text to the textField, Is there a way to send theEvent to the textField?
textField.stringValue = textField.stringValue + s;

// textField.keyDown(theEvent) // this does not work
break
}
}

我不想强制用户将焦点更改到文本字段以过滤 TableView 结果。

最佳答案

据我所知,-keyDown: 被发送到 firstResponder,在本例中是 TableView 。

我不喜欢这个想法,我会以不同的方式实现它,但您可以尝试将文本字段插入响应链和 TableView 上方的位置。您必须子类化文本字段并实现 mouseDown 来捕获事件,您还必须更改 TableView 的鼠标按下实现,这样它就不会捕获文本字段的事件。这太复杂了。

为什么不简单地设置文本字段的目标/操作并在事件循环之外处理用户输入?

关于cocoa - 如何将关键事件发送到没有快速焦点的 NSTextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28261009/

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