我想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正确设置,因为其他的委托方法,他们应该发挥作用.
我通过覆盖更改插入点大小-(void)drawInsertionPointInRect:(NSRect)aRect color:(NSColor *)aColor turnedOn:(BOOL)flag,但它不处理第一次闪烁(当您移动插入点时,它会恢复正常)
我设法通过重写私有方法来处理第一次闪烁- (void)_drawInsertionPointInRect:(NSRect)aRect color:(NSColor *)aColor.
但这对我来说不是一个解决方案,因为重写私有方法将导致App Store下降.我希望该应用程序在App Store中.我看到像iAWriter和Writeroom这样的应用程序有一个自定义插入点,它们在App Store中.
有谁知道他们是如何设法做到这一点,或者更好的方式而不是覆盖私有方法?
谢谢.
- (void)_drawInsertionPointInRect:(NSRect)aRect color:(NSColor *)aColor
{
aRect.size.width = 3.0;
[aColor set];
[NSBezierPath fillRect:aRect];
}
- (void)drawInsertionPointInRect:(NSRect)aRect color:(NSColor *)aColor turnedOn:(BOOL)flag
{
if(flag) {
aRect.size.width = 3.0;
[aColor set];
[NSBezierPath fillRect:aRect];
}
else {
[self setNeedsDisplayInRect:[self visibleRect] avoidAdditionalLayout:NO];
}
}
Run Code Online (Sandbox Code Playgroud) 我想在NSTextView中解析用户输入,以便以" - "开头的行会自动启动项目符号列表.我需要对NSTextView.textStorage做什么来启用项目符号列表,以便在每个项目符号行后按Enter时自动显示下一个项目符号?
我已经找到了一些例子,但他们都手工插入子弹,所以我想知道let textList = NSTextList(markerFormat: "{box}", options: 0)如果你必须自己手动插入盒子符号是什么意思?
目前我正在尝试在一个自定义的NSTextView中实现这一点,并且重写shouldChangeTextInRange(affectedCharRange: NSRange, replacementString: String?)因此,一个简单的例子可以解决" - "启动一个自动项目符号列表的最简单的输入情况,将受到高度重视.
更新:
这是我目前使用的代码:
override func shouldChangeTextInRange(affectedCharRange: NSRange, replacementString: String?) -> Bool {
super.shouldChangeTextInRange(affectedCharRange, replacementString: replacementString)
if string == "-" && replacementString == " " {
let textList = NSTextList(markerFormat: "{disc}", options: 0)
let textListParagraphStyle = NSMutableParagraphStyle()
textListParagraphStyle.textLists = [textList]
let attributes = [NSParagraphStyleAttributeName: textListParagraphStyle]
string = "\t\(textList.markerForItemNumber(0))\t"
textStorage?.addAttributes(attributes, range: NSMakeRange(0, textStorage!.string.length))
return false
}
else if affectedCharRange.location > 0 && replacementString …Run Code Online (Sandbox Code Playgroud) 我有一个NSTextView并要求插入点的坐标在用户交互时显示那里的视图.
有一个函数可以从NSPoint获取字符索引.我想知道是否有任何简单的方法可以做相反的事情?
谢谢你的帮助!
我sizeWithFont: 对iPhone 很熟悉.现在我正在尝试为Mac构建一个应用程序并需要类似的东西,但我不知道该怎么做:/
这就是我需要它的原因:我有一个显示一些文本的面板,我想调整它的大小,使其适合内容(a NSTextView).你会怎么做?
我在NSBox中有一个NSTextView.每当NSTextView获得焦点时,我想在NSBox上绘制焦点环,并在NSTextView失去焦点后立即移除焦点环.
谢谢,
我只知道如何修改NSTextView中的选项卡宽度
NSMutableParagraphStyle *paragraphStyle = [[self defaultParagraphStyle] mutableCopy];
[paragraphStyle setTabStops:[NSArray array]];
[paragraphStyle setDefaultTabInterval: tabWidth];
Run Code Online (Sandbox Code Playgroud)
但是,有没有办法在NSTextView中使用4个SPACES而不是TAB?
我希望能够保存 NSTextView 的当前文本和可见区域并恢复它。使用visibleRect和scrollRectToVisible:似乎会产生不一致的结果。如果我只是这样做:
- (void)restorePosition
{
NSRect r = [self.textView visibleRect];
[self.textView.layoutManager replaceTextStorage: self.textView.textStorage];
[self.textView scrollRectToVisible: r];
}
Run Code Online (Sandbox Code Playgroud)
当视图距离顶部不到 85 行时,视图将保持在原位,但我走得越远,它就会变得越远。从顶部开始 200 行,最终为 277,在 300 行,最终为 408,依此类推。
如果没有replaceTextStorage,它也可以按预期工作,但替换文本并找到以前的位置才是重点。替换文本的某些问题会导致线矩形计算变得不稳定。
显然,我计划从实际应用程序中保存的对象获取新的visibleRect和textStorage,但这说明了最少代码的问题。
有任何想法吗?
我设置textContainerInset的NSTextView一些值.
self.textView.textContainerInset = NSMakeSize(10, 10);
Run Code Online (Sandbox Code Playgroud)
如何在插入区域中选择文本视图?如果我尝试在此插入中选择文本区域,则会出现文本光标但没有任何反应.
下面是您可以添加到空白Cocoa应用程序项目以查看此行为的其他示例代码.
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
NSTextView *textView = [[NSTextView alloc] initWithFrame:self.window.contentView.bounds];
textView.string = @"1\n2\n3\n4\n5";
textView.textContainerInset = NSMakeSize(10, 10);
[self.window.contentView addSubview:textView];
}
Run Code Online (Sandbox Code Playgroud) nstextview ×10
cocoa ×8
objective-c ×5
macos ×2
caret ×1
focus ×1
focusrect ×1
nsbox ×1
nscontrol ×1
nsstring ×1
nstextfield ×1
scroll ×1
size ×1
swift ×1