我们如何在NSTextField- Cocoa中使用Shift + Enter进行换行

时间:2010-01-25 05:44:13

标签: cocoa

我想在textField中使用shift + enter来换行(Control + Enter正在工作) 我不想使用TextView,因为使用此Enter键操作不会执行..

5 个答案:

答案 0 :(得分:4)

执行此操作的标准方法是选项返回,它可以免费使用。

答案 1 :(得分:1)

当用户按下Enter键时,使用此代码可以发送注释,例如当用户按下Shift + Enter键时,将执行NSTextView的默认行为,即插入换行符。在我看来,这是一个比在这种情况下使用NSTextField更好的解决方案。

- (BOOL)textView:(NSTextView *)aTextView doCommandBySelector:(SEL)aSelector {
    if (aSelector == @selector(insertNewline:)) {
        NSEvent * event = NSApp.currentEvent;
        if ((event.modifierFlags & NSShiftKeyMask) != NSShiftKeyMask) {
            //Do some when only the enter key is pressed
            return YES;
        }
    }
   return NO;
}

答案 2 :(得分:0)

或者,如果文本视图比文本字段更适合您的应用,那么这就是您应该使用的内容。

我写了一个可以发送动作消息的人。这是the headerthe implementation。它在a BSD license下。

答案 3 :(得分:0)

谢谢彼得的作品 我在代码中添加以下内容     int flags = [event modifierFlags];     BOOL shift =(flags& NSShiftKeyMask)?是:否;

if (([event keyCode] == enterKey1 || [event keyCode] == enterKey2) && !shift) {
    window = [self window];
    [window makeFirstResponder:[window contentView]];

    [NSApp sendAction:action to:target from:self];
}

但现在可以在动作后设置对texView的关注 在textField上我使用的是[textField selecttext];

对于TextView我试过[theTextView setSelectedRange:NSMakeRange(0,0)]; 但不起作用

答案 4 :(得分:0)

以下是我如何做到的:在control:textView:doCommandBySelector:的{​​{1}}内,捕获NSTextFieldDelegate命令并检查当前事件是否具有shift修饰符标记。

insertNewline: