objective-c - 检测 Ctrl + Return 或 Ctrl + Enter 按下

标签 objective-c cocoa nsevent

我发现很难找到关于此事的任何官方信息。

我有一个 TextView 并覆盖 keyDown 事件,并尝试检测用户是否按下 Ctrl + Enter

- (void)keyDown:(NSEvent *)theEvent
{
    if([theEvent modifierFlags] & NSControlKeyMask && /* how to check if enter is pressed??? */)
    {
        NSLog(@"keyDown: ctrl+enter");
        if(_delegate)
        {
            if([_delegate respondsToSelector:@selector(didSomething:)])
            {
                [_delegate performSelector:@selector(didSomething:) withObject:nil];
            }
        }
    }else
    {
        [super keyDown:theEvent];
    }
}

我尝试了不同的方法,但没有任何效果。

有人吗?

(很抱歉问了这么一个微不足道的问题,但我已经用谷歌搜索了一段时间,但没有找到任何东西)

最佳答案

unichar c = [theEvent charactersIgnoringModifiers] characterAtIndex:0];

if(([theEvent modifierFlags] & NSControlKeyMask) && (c == NSCarriageReturnCharacter || c == NSEnterCharacter) {
    // do stuff
}

或者,您可以使用委托(delegate)的 textView:doCommandBySelector::

- (BOOL)textView:(NSTextView *)aTextView doCommandBySelector:(SEL)aSelector {
    // insertLineBreak: is the method sent when a user presses control-return in a text view
    if (aSelector == @selector(insertLineBreak:)) {
            // do stuff
            return YES;
        }
    }

    return NO;
}

关于objective-c - 检测 Ctrl + Return 或 Ctrl + Enter 按下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7361168/

相关文章:

objective-c - 在 Objc 中定义的枚举 > 在 Swift 中声明 > 在 Objc 中使用

公开只读但具有私有(private) setter 的 Objective-C 属性

ios - 动画 UIPopoverController

Swift Scheduler 滞后?

objective-c - 仪器中出现奇怪的内存泄漏

cocoa - 在 cocoa 应用程序中检测 Enter/Return 键的最佳方法?

ios - 如何编辑 ABAddressBook 上的记录

cocoa - 如何选择屏幕区域并将其另存为 CGimage 或 CIImage?

macos - 检测 OS X 上的任何按键,包括修饰键

swift - 让 keydown NSEvent 在 Swift 中运行一次