我有一个NSTextView.
我只想NSLinkAttributeName在NSTextView...中的选定文本中添加一个属性(an )
你能帮助我吗 ?
谢谢.
从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) 我知道为了显示一个popover我需要一个NSView,但我不认为有一个与插入符号相关联(在NSTextView内).有没有办法在插入符号下方显示NSPopover?
我试图分配一个NSView并使用它定位(NSRect)boundingRectForGlyphRange:(NSRange)glyphRange inTextContainer:(NSTextContainer *)container,但弹出窗口不会出现(并且有一个原因,该方法返回NSRect: {{0, 0}, {0, 0}}).
我有一个NSTextView,我收到-textDidChange:通知.从那里,我可以得到整个textview的当前字符串值,但我无法弄清楚如何分辨已删除和添加的内容.
例如,如果文本视图中的字符串是This is a string并且用户删除了该字符串,那么g如何才能知道该更改?
有没有办法实现这一点,最好没有子类化?
我需要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轴是正常的).
我错过了什么?
我怎样才能从获得所选文本的字符串NSTextView作为NSString?
非常感谢您的帮助.
我想更改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但我不知道如何从字符串中获取此类.
我是可可节目中的新手.
谢谢你的帮助!
如果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)
有没有人对此有任何想法或替代方案?(我是否还有另一种方法,可能更适合覆盖)?
我正在尝试更改 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) 我正在使用 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,但没有给出有效的答案。