我想在textField中使用shift + enter来换行(Control + Enter正在工作) 我不想使用TextView,因为使用此Enter键操作不会执行..
答案 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 header和the 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: