gpt4 book ai didi

objective-c - 使用什么对象进行特殊文本编辑

转载 作者:行者123 更新时间:2023-12-03 16:53:08 25 4
gpt4 key购买 nike

我需要一个特殊的文本字段来执行以下操作:

  • 多行
  • Tab 键支持
  • 按下回车键时发送操作
  • alt+enter 换行
  • Shift+Enter 换行

我不知道该用什么。

NSTextView 看起来不错,但我无法在 Enter 上设置操作,并且按 Enter 键会导致换行

NSTextField 不支持 Tab 键,并且 Shift-Enter 不起作用。

有什么想法吗?谢谢!

最佳答案

您最好的选择是子类化 NSTextView 以获得您想要的功能。这是一个简单的例子:

MyTextView.h

@interface MyTextView : NSTextView
{
id target;
SEL action;
}
@property (nonatomic, assign) id target;
@property (nonatomic, assign) SEL action;
@end

MyTextView.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 的问题的精彩答案键码:Where can I find a list of key codes for use with Cocoa's NSEvent class?

关于objective-c - 使用什么对象进行特殊文本编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4480262/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com