尝试更改NSTextField的选定文本背景颜色(我们有一个黑暗的UI,选定的文本背景几乎与文本本身相同),但只有NSTextView似乎允许我们更改它.
因此我们尝试使用NSTextView伪造NSTextField,但无法使文本滚动工作相同.
我们得到的最接近的是这段代码:
NSTextView *tf = [ [ NSTextView alloc ] initWithFrame: NSMakeRect( 30.0, 20.0, 80.0, 22.0 ) ];
// Dark UI
[tf setTextColor:[NSColor whiteColor]];
[tf setBackgroundColor:[NSColor darkGrayColor]];
// Fixed size
[tf setVerticallyResizable:FALSE];
[tf setHorizontallyResizable:FALSE];
[tf setAlignment:NSRightTextAlignment]; // Make it right-aligned (yup, we need this too)
[[tf textContainer] setContainerSize:NSMakeSize(2000, 20)]; // Try to Avoid line wrapping with this ugly hack
[tf setFieldEditor:TRUE]; // Make Return key accept the textfield
// Set text properties
NSMutableDictionary *dict = [[[tf selectedTextAttributes] mutableCopy ] …Run Code Online (Sandbox Code Playgroud) 我有一个启用了自动链接检测的NSTextView.当我以编程方式设置文本时,[myTextView setString:@"http://google.com"]它不会自动显示链接.
如果我在文本视图中键入任何内容,它将添加链接.我希望它添加链接
我正在制作一些文本查看器应用程序 目前我需要非常频繁和精确的线路处理能力,所以我想要继承NSTextStorage类.但我找不到任何方法来设置新的文本存储NSTextView.我能找到的唯一方法是
-[NSLayoutManager replaceTextStorage:]
Run Code Online (Sandbox Code Playgroud)
方法.但令人困惑的是,这是我正在寻找的.因为它似乎只是替换链接的NSLayoutManagers而不是NSTextView的文本存储.
我还考虑了子类化NSTextView和重写-textStorage方法,但如果该类不是为子类设计的,那么它将产生未定义的结果.
有人试图在NSTextView上使用自定义NSTextStorage吗?我怎样才能做到这一点?或者这是否被设计禁止?
我正在尝试以编程方式设置一个NSTextViewinNSScrollView并且遇到了问题。
具体来说,我无法滚动文本视图;滚动视图似乎认为“这就是全部”。当您尝试向下滚动以查看其余内容(不释放)时,结果如下:

一旦你释放,滚动视图就会反弹回来,所以这不是图形故障;它只是在框架高度剪辑文本视图。
我尝试过使用Apple 的“Text In ScrollView”文档进行试验,并且我已经尝试过setVerticallyResizable:等等。
编码:
- (void)configureValueTextView
{
NSScrollView *vfContainer = [[NSScrollView alloc] initWithFrame:(NSRect){0,0,50,50}];
vfContainer.hasVerticalScroller = YES;
vfContainer.hasHorizontalScroller = NO;
vfContainer.translatesAutoresizingMaskIntoConstraints = NO;
_valueFieldContainer = vfContainer;
vfContainer.borderType = NSLineBorder;
NSTextView *valueField = _valueField = [[NSTextView alloc] initWithFrame:(NSRect){0,0,vfContainer.contentSize}];
valueField.delegate = self;
valueField.minSize = (NSSize){0,0};
valueField.maxSize = (NSSize){FLT_MAX, FLT_MAX};
[valueField setVerticallyResizable:YES];
[valueField setHorizontallyResizable:YES];
valueField.translatesAutoresizingMaskIntoConstraints = NO;
valueField.string = _value ? _value : @"";
valueField.editable = YES;
valueField.textContainer.containerSize = (NSSize) { vfContainer.contentSize.width, …Run Code Online (Sandbox Code Playgroud) 我想NSTextView在失去焦点之后清除选择.我怎样才能做到这一点?提前致谢!
凯.
我实现了以下委托方法NSTextField来添加自动完成支持:
- (NSArray *)control:(NSControl *)control
textView:(NSTextView *)textView
completions:(NSArray *)words
forPartialWordRange:(NSRange)charRange
indexOfSelectedItem:(NSInteger *)index
Run Code Online (Sandbox Code Playgroud)
问题是这个方法永远不会被调用.我可以验证delegate的NSTextField正确设置,因为其他的委托方法,他们应该发挥作用.
我正在尝试创建一个简单的基于NSTextView的窗口,用于简单的WYSIWYG编辑.但是,我只想允许某些类型的格式化(例如粗体,斜体,下划线和单个标题类型,但没有颜色或不同的字体.)
问题是,如果我只是使用NSTextView,有人可以在另一个程序中创建或复制格式化文本,然后只需将其粘贴到该视图中,所有格式都与它一起使用,允许我不允许的内容,例如不同的字体,颜色,等等
充其量,我想自动删除我的应用程序不支持的任何格式.在最坏的情况下,我想简单地拦截粘贴并将其更改为纯文本,尽管他们必须手动重新格式化它.但这比无效格式更可取.
注意:在SO上多次提到类似的东西,但它们通常是指Web或使用JavaScript/JQuery.我特别指的是在Mac应用程序中使用NSTextView,所以请在简单地将其标记为重复之前,确保这是另一个问题所指的内容.谢谢.
我有两个窗口:窗口A是从NIB加载的; 和Window B以编程方式创建.
两个窗口都有一个NStextView:窗口A中textview的attributionString绑定到使用IBtext的模型的属性; 而Window B中textview的attributionString绑定到模型的属性使用方法.text-[NSObject bind:toObject:withKeyPath:options:]
[textview bind:@"attributedString"
toObject:obj
withKeyPath:@"text"
options:nil];
Run Code Online (Sandbox Code Playgroud)
这是奇怪的事情:Window B中的textview确实绑定了obj.text,但textview中的更改永远不会更新obj.text.但是,如果我在窗口A的文本视图中进行了更改,则obj.text窗口B中的文本视图也会相应更新.
所以我在想,这个-[NSObject bind:toObject:withKeyPath:options:]方法只适用于单向绑定.我在Cocoa文件中找不到明确的解释.有没有人遇到过这个问题?如何在代码中实现双向绑定?
有没有办法NSTextView像这样设置占位符字符串NSTextField?我检查了房产,但找不到它.我搜索了一些问题,但没有正确的解释.
我正在使用 Markdown 语法的 Mac 应用程序中的富文本编辑器。我NSTextStorage过去常常在 Markdown 语法中观察匹配项,然后NSAttributedString像这样实时地将样式应用到:
在这一点上,我已经在这方面不知所措,但我很高兴能够取得进展。:)本教程非常有帮助。
作为下一步,我想在呈现 's 字符串时隐藏 Markdown 字符NSTextView。所以在上面的例子中,一旦最后一个星号被输入,我希望* *字符被隐藏,只是sample以粗体显示。
我正在使用NSLayoutManager委托,我可以看到匹配的字符串,但我不清楚如何使用该shouldGenerateGlyphs方法生成修改后的字形/属性。这是我到目前为止所拥有的:
func layoutManager(_: NSLayoutManager, shouldGenerateGlyphs _: UnsafePointer<CGGlyph>, properties _: UnsafePointer<NSLayoutManager.GlyphProperty>, characterIndexes _: UnsafePointer<Int>, font _: NSFont, forGlyphRange glyphRange: NSRange) -> Int {
let pattern = "(\\*\\w+(\\s\\w+)*\\*)" // Look for stuff like *this*
do {
let regex = try NSRegularExpression(pattern: pattern)
regex.enumerateMatches(in: textView.string, range: glyphRange) {
match, _, _ in …Run Code Online (Sandbox Code Playgroud) nstextview ×10
cocoa ×9
macos ×4
objective-c ×4
nstextfield ×2
binding ×1
focus ×1
formatting ×1
nscontrol ×1
nsscrollview ×1
paste ×1
reformat ×1
subclassing ×1
textkit ×1