标签: nstextview

使用NSTextView伪造NSTextField以获得漂亮的颜色?

尝试更改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)

macos cocoa objective-c nstextfield nstextview

9
推荐指数
1
解决办法
3433
查看次数

在以编程方式设置文本后,自动链接检测在NSTextView中不起作用

我有一个启用了自动链接检测的NSTextView.当我以编程方式设置文本时,[myTextView setString:@"http://google.com"]它不会自动显示链接.

如果我在文本视图中键入任何内容,它将添加链接.我希望它添加链接

macos cocoa nstextview

9
推荐指数
3
解决办法
2103
查看次数

在NSTextView中替换NSTextStorage的正确方法?

我正在制作一些文本查看器应用程序 目前我需要非常频繁和精确的线路处理能力,所以我想要继承NSTextStorage类.但我找不到任何方法来设置新的文本存储NSTextView.我能找到的唯一方法是

-[NSLayoutManager replaceTextStorage:]
Run Code Online (Sandbox Code Playgroud)

方法.但令人困惑的是,这是我正在寻找的.因为它似乎只是替换链接的NSLayoutManagers而不是NSTextView的文本存储.

我还考虑了子类化NSTextView和重写-textStorage方法,但如果该类不是为子类设计的,那么它将产生未定义的结果.

有人试图在NSTextView上使用自定义NSTextStorage吗?我怎样才能做到这一点?或者这是否被设计禁止?

cocoa nstextview subclassing nstextstorage

9
推荐指数
1
解决办法
3145
查看次数

以编程方式在 NSScrollView 中设置 NSTextView

我正在尝试以编程方式设置一个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)

macos cocoa objective-c nstextview nsscrollview

9
推荐指数
2
解决办法
2977
查看次数

当NSTextView失去焦点时,我怎么知道?

我想NSTextView在失去焦点之后清除选择.我怎样才能做到这一点?提前致谢!

凯.

cocoa focus objective-c nstextview

8
推荐指数
1
解决办法
2913
查看次数

未调用NSTextField自动完成委托方法

我实现了以下委托方法NSTextField来添加自动完成支持:

- (NSArray *)control:(NSControl *)control
            textView:(NSTextView *)textView
         completions:(NSArray *)words
 forPartialWordRange:(NSRange)charRange
 indexOfSelectedItem:(NSInteger *)index
Run Code Online (Sandbox Code Playgroud)

问题是这个方法永远不会被调用.我可以验证delegateNSTextField正确设置,因为其他的委托方法,他们应该发挥作用.

cocoa objective-c nstextfield nstextview nscontrol

8
推荐指数
1
解决办法
3355
查看次数

如何拦截粘贴到NSTextView以删除不支持的格式?

我正在尝试创建一个简单的基于NSTextView的窗口,用于简单的WYSIWYG编辑.但是,我只想允许某些类型的格式化(例如粗体,斜体,下划线和单个标题类型,但没有颜色或不同的字体.)

问题是,如果我只是使用NSTextView,有人可以在另一个程序中创建或复制格式化文本,然后只需将其粘贴到该视图中,所有格式都与它一起使用,允许我不允许的内容,例如不同的字体,颜色,等等

充其量,我想自动删除我的应用程序不支持的任何格式.在最坏的情况下,我想简单地拦截粘贴并将其更改为纯文本,尽管他们必须手动重新格式化它.但这比无效格式更可取.

注意:在SO上多次提到类似的东西,但它们通常是指Web或使用JavaScript/JQuery.我特别指的是在Mac应用程序中使用NSTextView,所以请在简单地将其标记为重复之前,确保这是另一个问题所指的内容.谢谢.

formatting cocoa reformat paste nstextview

8
推荐指数
1
解决办法
1889
查看次数

bind:toObject:withKeyPath:options:是单向绑定吗?

我有两个窗口:窗口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文件中找不到明确的解释.有没有人遇到过这个问题?如何在代码中实现双向绑定?

cocoa binding nstextview cocoa-bindings

8
推荐指数
1
解决办法
3117
查看次数

为NSTextView设置占位符字符串

有没有办法NSTextView像这样设置占位符字符串NSTextField?我检查了房产,但找不到它.我搜索了一些问题,但没有正确的解释.

macos cocoa nstextview

8
推荐指数
4
解决办法
3583
查看次数

在 Swift 中使用 NSLayoutManager 隐藏 Markdown 字符

我正在使用 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)

nslayoutmanager nstextview nstextstorage textkit

8
推荐指数
2
解决办法
1344
查看次数