我正在尝试从自定义NSTextView(来自NSTextField完成列表)中检测回车键,但我无法让它工作。
我的界面:
@interface PaddedTextView : NSTextView < NSTextViewDelegate >
我实施:
- (BOOL)textView:(NSTextView *)textView doCommandBySelector (SEL)commandSelector
{
但它永远不会被召唤。
选择选项后按Enter键时,完成列表消失。
我也实施了:
- (void)keyDown:(NSEvent *)event
它将检测字母数字键事件,但不会检测回车键。
我也已经实现了flagsChanged来捕获shift键并且可以正常工作。
我正在使用自定义NSTextField,NSTextFieldCell和NSTextView。
当我选择一个完成条目并点击回车键时,该值将被插入到NSTextField控件中,但我想在发生这种情况时执行操作,我无法检测到它...
感谢任何帮助。 感谢
答案 0 :(得分:0)
我找到了解决问题的方法。 (更新:这不起作用)
我在NSTextView实现中添加了以下内容:
-(void) insertCompletion:(NSString *)word forPartialWordRange:(NSRange)charRange movement:(NSInteger)movement isFinal:(BOOL)flag {
if(movement == NSReturnTextMovement){
NSLog(@"Enter key pressed...");
}
[super insertCompletion:word forPartialWordRange:charRange movement:movement isFinal:flag];
}
更新:实际上这并不总是有效。仅在选择完成选项时才会调用此函数。如果您键入文本字段并按Enter键我无法检测到该键事件,它只会解除完成列表。仍在寻找真正的解决方案。
答案 1 :(得分:-1)
我不确定完成列表的实现,但至少在正常的NSTextView上,当按下回车键时会调用insertNewline:(id)sender
。