首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从自定义NSTextView完成列表中检测按下enter键

从自定义NSTextView完成列表中检测按下enter键
EN

Stack Overflow用户
提问于 2016-10-06 07:57:11
回答 2查看 401关注 0票数 0

我试图从自定义NSTextView (从NSTextField完成列表)中检测Enter键,但我无法使其正常工作。

我的界面:

代码语言:javascript
运行
复制
@interface PaddedTextView : NSTextView < NSTextViewDelegate >

我实现了:

代码语言:javascript
运行
复制
- (BOOL)textView:(NSTextView *)textView doCommandBySelector (SEL)commandSelector
    {

但它从未被调用过。

当我选择一个选项后按enter键时,完成列表消失。

我还实现了:

代码语言:javascript
运行
复制
- (void)keyDown:(NSEvent *)event

它将检测字母数字键事件,但不会检测enter键。

我还实现了flagsChanged来捕获Shift键,这很有效。

我使用的是一个自定义的NSTextField、NSTextFieldCell和NSTextView。

当我选择一个完成条目并按下enter键时,该值将被插入到NSTextField控件中,但我希望在这种情况发生时执行一个操作,但我无法检测到它……

任何帮助都是非常感谢的。谢谢

EN

回答 2

Stack Overflow用户

发布于 2016-10-07 02:34:51

我找到了解决我的问题的办法。(更新:这不起作用)

我在我的NSTextView实现中添加了以下内容:

代码语言:javascript
运行
复制
-(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,我无法检测到该关键事件,它只会忽略完成列表。仍然在寻找一个真正的解决方案。

票数 0
EN

Stack Overflow用户

发布于 2016-10-07 00:41:59

我不确定完成列表的实现,但是至少在一个普通的NSTextView上,当按下Enter键时,insertNewline:(id)sender会被调用。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39885449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档