我有一个包含NSTableView和NSTextField的视图。表视图具有焦点。我想使用文本字段作为表视图的过滤器。有什么方法可以将表视图捕获的按键事件发送到NSTextField吗?
这是我拥有的keyDown函数,我想将theEvent发送到switch语句的默认处理程序中的text字段。
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
}
}
我希望不必强制用户将焦点更改为文本字段,以便过滤表格视图结果。
答案 0 :(得分:1)
据我所知,-keyDown:
被发送到firstResponder
,在这种情况下是表格视图。
我不喜欢这个想法,我会以不同的方式实现这一点,但您可以尝试将文本字段插入响应者链和表格视图上方的位置。您必须对文本字段进行子类化并实现mouseDown
来捕获事件,您还必须更改表格视图鼠标按下实现,这样它就不会捕获文本字段的事件。这太复杂了。
为什么不简单地设置文本字段的目标/操作并处理事件循环之外的用户输入?