我需要一个特殊的文本字段来执行以下操作:
- 多行
- 制表键支持
- 按下回车键时发送动作
- alt+enter 换行
- shift+enter 换行
我不知道该用什么。
NSTextView 看起来不错,但我无法在输入时设置操作并按下输入键会导致新行
NSTextField 没有制表键支持,并且 shift-enter 不起作用。
有任何想法吗?谢谢!
我需要一个特殊的文本字段来执行以下操作:
我不知道该用什么。
NSTextView 看起来不错,但我无法在输入时设置操作并按下输入键会导致新行
NSTextField 没有制表键支持,并且 shift-enter 不起作用。
有任何想法吗?谢谢!
您最好的选择是子类NSTextView
化以获得您想要的功能。这是一个简单的例子:
MyTextView.h
@interface MyTextView : NSTextView
{
id target;
SEL action;
}
@property (nonatomic, assign) id target;
@property (nonatomic, assign) SEL action;
@end
我的文本视图.m
@implementation MyTextView
@synthesize target;
@synthesize action;
- (void)keyDown:(NSEvent *)theEvent
{
if ([theEvent keyCode] == 36) // enter key
{
NSUInteger modifiers = [theEvent modifierFlags];
if ((modifiers & NSShiftKeyMask) || (modifiers & NSAlternateKeyMask))
{
// shift or option/alt held: new line
[super insertNewline:self];
}
else
{
// straight enter key: perform action
[target performSelector:action withObject:self];
}
}
else
{
// allow NSTextView to handle everything else
[super keyDown:theEvent];
}
}
@end
设定目标和行动将按如下方式完成:
[myTextView setTarget:someController];
[mytextView setAction:@selector(omgTheUserPressedEnter:)];
有关键码和全套NSResponder
消息的更多详细信息insertNewline:
,请参阅我关于键码的问题的出色答案NSEvent
:在哪里可以找到用于 Cocoa 的 NSEvent 类的键码列表?