我有一个NSView
子类,它实现了acceptsFirstResponder
,resignFirstResponder
和becomeFirstResponder
。它还实现了以下方法:
-(void)keyDown:(NSEvent *) event
{
[self interpretKeyEvents:[NSArray arrayWithObject:event]];
}
我处理interpertKeyEvent:
在appController类中发送的消息(appController是NSWindow
委托,因此是响应者链的一部分。)
此方法适用于interpertKeyEvent:
生成的大多数邮件,例如insertNewline:
,moveUp:
和moveDown:
,但它不适用于insertText:
。< / p>
如何在响应程序链中获取对象以处理insertText:
消息?
答案 0 :(得分:0)
根据文件,NSResponder的标准实施:
“NSResponder实现只是将此消息传递给下一个响应者,如果没有下一个响应者,则发出蜂鸣声。”
我想到了两种可能性:要么您的视图不在您希望它在响应者链中的位置,要么您的方法签名与预期的不匹配:
您如何实施acceptFirstResponder,resignFirstResponder和becomeFirstResponder?
您的应用程序是使用NSWindowControllers还是基于文档的应用程序?
有关事件处理架构的进一步文档:
答案 1 :(得分:0)
您必须为您的类实现NSTextInput
协议,然后将调用insertText。请查看Aquamacs中的nsterm.m,了解如何实现它。