如何使Tab键将焦点移出NSTextView?

时间:2010-03-20 17:47:36

标签: objective-c cocoa nstextview

我正在使用NSTextView来允许多行输入。但是,由于我的应用程序的性质,用户在按TAB时可以更轻松地移动到下一个输入元素。

如何让TAB退出NSTextView,同时保持Enter键的换行符?

2 个答案:

答案 0 :(得分:19)

您可以在文字视图的委托中实施-textView:doCommandBySelector:

- (BOOL)textView:(NSTextView *)aTextView doCommandBySelector:(SEL)aSelector {
    if (aSelector == @selector(insertTab:)) {
        [[aTextView window] selectNextKeyView:nil];
        return YES;
    }

    return NO;
}

请参阅http://developer.apple.com/documentation/Cocoa/Reference/NSTextViewDelegate_Protocol

答案 1 :(得分:4)

您需要在子类中实现它。

我为Translate Text编写了这样一个子类。欢迎您在its BSD license下使用它。这是the headerthe implementation file

  

...同时保持Enter键的换行符?

我的主要目的是在用户按下Enter键时向目标发送一个动作,我也让它从视图中删除焦点。但是,两者都是代码中的显式语句;您可以简单地注释掉该代码或将其删除。