标签: nstextview

NSTextView添加到所选文本的URL链接?

我有一个NSTextView.

我只想NSLinkAttributeNameNSTextView...中的选定文本中添加一个属性(an )

你能帮助我吗 ?

谢谢.

cocoa nstextview

3
推荐指数
1
解决办法
1860
查看次数

从NSTextView中提取第一个非空白行的最有效方法是什么?

从NSTextView中提取第一个非空白行的最有效方法是什么?

例如,如果文本是:

\n
\n
    \n
         This is the text I want     \n
 \n
Foo bar  \n
\n
Run Code Online (Sandbox Code Playgroud)

结果将是"这是我想要的文字".

这是我有的:

NSString *content = self.textView.textStorage.string;
NSInteger len = [content length];
NSInteger i = 0;

// Scan past leading whitespace and newlines
while (i < len && [[NSCharacterSet whitespaceAndNewlineCharacterSet] characterIsMember:[content characterAtIndex:i]]) {
    i++;
}
// Now, scan to first newline
while (i < len && ![[NSCharacterSet newlineCharacterSet] characterIsMember:[content characterAtIndex:i]]) {
    i++;
}
// Grab the substring up to that newline
NSString *resultWithWhitespace = …
Run Code Online (Sandbox Code Playgroud)

cocoa nsstring nstextview

3
推荐指数
1
解决办法
369
查看次数

在NSTextView中的插入符号下面的NSPopover

我知道为了显示一个popover我需要一个NSView,但我不认为有一个与插入符号相关联(在NSTextView内).有没有办法在插入符号下方显示NSPopover?

我试图分配一个NSView并使用它定位(NSRect)boundingRectForGlyphRange:(NSRange)glyphRange inTextContainer:(NSTextContainer *)container,但弹出窗口不会出现(并且有一个原因,该方法返回NSRect: {{0, 0}, {0, 0}}).

cocoa nstextview popover nspopover

3
推荐指数
1
解决办法
1805
查看次数

NSTextView:获取文本更改(插入和删除)

我有一个NSTextView,我收到-textDidChange:通知.从那里,我可以得到整个textview的当前字符串值,但我无法弄清楚如何分辨已删除和添加的内容.

例如,如果文本视图中的字符串是This is a string并且用户删除了该字符串,那么g如何才能知道该更改?

有没有办法实现这一点,最好没有子类化?

macos cocoa nstextview

3
推荐指数
1
解决办法
1230
查看次数

如何在NSTextView中计算所选文本的正确坐标?

我需要NSTextView使用CALayeroverlay 来突出显示使用overlay的行,并在我的子类中使用此代码获取rect for line NSTextView...:

- (NSRect)overlayRectForRange:(NSRange)aRange
{
    NSScreen *currentScreen = [NSScreen currentScreenForMouseLocation];
    NSRect rect = [self firstRectForCharacterRange:aRange];

    rect = [self convertRectToLayer:rect];
    rect.origin = [currentScreen flipPoint:rect.origin];
    rect = [self.window convertRectToScreen:rect];

    return rect;
}
Run Code Online (Sandbox Code Playgroud)

...并放置叠加层:

- (void)focusOnLine
{
    NSInteger caretLocation = [aTextView selectedRange].location;
    NSRange neededRange;

    (void)[layoutMgr lineFragmentRectForGlyphAtIndex:caretLocation effectiveRange:&neededRange];
    CALayer *aLayer = [CALayer layer];
    [aLayer setFrame:NSRectToCGRect([aTextView overlayRectForRange:neededRange])];
    [aLayer setBackgroundColor:[[NSColor redColor] coreGraphicsColorWithAlfa:0.5]];
    [[aTextView layer] addSublayer:aLayer];
}
Run Code Online (Sandbox Code Playgroud)

结果,选择叠加与所需线的宽度一致,但绝对不与Y轴匹配(X轴是正常的).

我错过了什么?

cocoa calayer nstextview

3
推荐指数
1
解决办法
925
查看次数

从NSTextView Objective-C获取选择(突出显示的文本)字符串

我怎样才能从获得所选文本的字符串NSTextView作为NSString

非常感谢您的帮助.

macos xcode objective-c nsstring nstextview

3
推荐指数
2
解决办法
3715
查看次数

在NSTextView中更改特定子字符串的颜色

我想更改NSTextView中特定文本的颜色.该方法应该在keydown事件之后检查.

例如:单词void已完成,字符串void将颜色更改为蓝色.像代码编辑器.

我搜索了很长时间但没有找到任何东西.我的代码:

 NSRange range = [text rangeOfString:@"void"];
 NSString *substring = [[text substringFromIndex:NSMaxRange(range)] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
 //I think, here is the mistake.
 NSAttributedString *now = [NSAttributedString initWithString:substring];
 [now setTextColor:[[NSColor blueColor]]];
Run Code Online (Sandbox Code Playgroud)

我已经读过我必须使用a NSAttributedString但我不知道如何从字符串中获取此类.

我是可可节目中的新手.

谢谢你的帮助!

macos cocoa nsstring nstextview

3
推荐指数
1
解决办法
2262
查看次数

NSTextView自定义双击选择

如果a NSTextView包含以下内容:

SELECT someTable.someColumn FROM someTable
Run Code Online (Sandbox Code Playgroud)

并且用户双击someTable.someColumn,整个事物被选中(期间的两侧).在这种特定情况下(查询编辑器),对于选择someTable或者someColumn选择更有意义.

我试着四处寻找,看看我是否能找到一种方法来自定义选择,但到目前为止我一直无法做到.

目前我正在考虑的是进行子类化NSTextView并执行以下操作:

- (void)mouseDown:(NSEvent *)theEvent
{
  if(theEvent.clickCount == 2)
  {
    // TODO: Handle double click selection.
  }
  else
  {
    [super mouseDown:theEvent];
  }
}
Run Code Online (Sandbox Code Playgroud)

有没有人对此有任何想法或替代方案?(我是否还有另一种方法,可能更适合覆盖)?

cocoa selection nstextview osx-mountain-lion

3
推荐指数
1
解决办法
737
查看次数

更改 NStextView 的颜色和字体

我正在尝试更改 NSTextView 的颜色和字体大小,但它似乎不起作用。这是我的代码。我检查了其他帖子,但它们似乎不起作用。这是我的代码。

 var area:NSRange = NSMakeRange(0, textView.textStorage!.length)
 self.textView.setTextColor(NSColor.grayColor(), range: area)
 self.textView.textStorage?.font = NSFont(name: "Calibri", size: 16)
Run Code Online (Sandbox Code Playgroud)

macos cocoa nstextview

3
推荐指数
1
解决办法
2125
查看次数

SwiftUI 中文本编辑器的透明背景

我正在使用 SwiftUI 为 iOS、iPadOS 和 macOS 构建应用程序,我需要一个具有透明背景的 TextEditor。

之前有人问过这个问题,我在 iOS/iPadOS(在 SwiftUI 中更改 TextEditor 的背景颜色)找到了一个很好的答案,但对于 macOS 没有。

这是我基于上面链接的代码,非常适用于 iOS 和 iPadOS:

TextEditor(text: $text)
  .foregroundColor(.black)
  .onAppear {
      #if os(macOS)
      // ??
      #else
      UITextView.appearance().backgroundColor = .clear
      #endif
  }
Run Code Online (Sandbox Code Playgroud)

NSTextView似乎没有相当于UITextView.appearance(),所以我不完全确定在那里做什么。

使用.background(Color.clear)也不起作用:

TextEditor(text: $text)
  .foregroundColor(.black)
  .background(Color.clear)
  .onAppear {
      #if os(macOS)
      // ??
      #else
      UITextView.appearance().backgroundColor = .clear
      #endif
  }
Run Code Online (Sandbox Code Playgroud)

有谁知道在 macOS 上为 TextEditor 获取透明背景的方法?

此外,这里已经专门针对 macOS 询问了这个问题:Changing TextEditor background color in SwiftUI for macOS,但没有给出有效的答案。

macos nstextview swift swiftui

3
推荐指数
1
解决办法
780
查看次数