我有一个NSTextView包含供用户编辑的数据,但我想用不可编辑数据的页眉和页脚包围它,以便让用户了解上下文.
我不认为NSTextView可以处理混合可编辑/不可编辑数据的概念,所以我想出了一些想法.
a)使用带有自定义单元格的文本附件来绘制页眉和页脚.
b)内有3 NSTextView秒NSScrollView.
c)使用属性来确定无法编辑的内容,并使用委托方法来防止编辑,这可能是我最喜欢的,因为它可能是最不具侵入性的.
我错过了什么,有什么更好的想法吗?
我有一个非常简单的窗口,其中包含一个NSTextView.我正在调用readRTFDFromFile:在磁盘上加载并显示rtf文件.我是在awakeFromNib处理程序中调用它的.当视图出现在屏幕上时,它仅部分显示rtf的内容,视图的按钮部分为空白/白色.
但是,当鼠标移动到控件上时,rtf的其余部分将被正确渲染,填充以前的空白区域.
关于为什么会这样,我有点不知所措.有任何想法吗?
我想为NSTextField找到相当于[fieldName stringValue]的东西,但是对于NSTextView.我的理解是NSTextField不存在stringValue属性,因为该字段支持更丰富的文本.
尽管有很多谷歌搜索,我无法弄清楚如何获取NSTextView的原始文本内容.我使用NSTextView而不是NSTextField的唯一原因是我可以使用滚动条...
绝对是一个新问题!
提前致谢.
因此,我试图获得与NSTextView中特定字符的位置相对应的NSPoint或NSRect.这就是我到目前为止所做的(效果不佳,结果似乎有些不可预测.
NSRange theTextRange = [[theTextView layoutManager] glyphRangeForCharacterRange:[theTextStorage editedRange] actualCharacterRange:NULL];
NSRect theTextRect = [[theTextView layoutManager] boundingRectForGlyphRange:theTextRange inTextContainer:[theTextView textContainer]];
Run Code Online (Sandbox Code Playgroud) 在我正在处理的应用程序中,用户输入纯文本,应用程序通过将文本转换为NSAttributedString来重新格式化文本,并显示它.一切都发生了.
目前,我在NSTextView的textDidChange委托方法上执行以下操作:
- (void)textDidChange:(NSNotification *)notification {
// saving the cursor position
NSInteger insertionPoint = [[[self.mainTextView selectedRanges] objectAtIndex:0] rangeValue].location;
// this grabs the text view's contact as plain text
[self updateContentFromTextView];
// this creates an attributed strings and displays it
[self updateTextViewFromContent];
// resetting the cursor position
self.mainTextView.selectedRange = NSMakeRange(insertionPoint, 0);
}
Run Code Online (Sandbox Code Playgroud)
虽然这主要起作用,但并不理想.文本似乎瞬间闪烁(你特别注意拼写错误下的红点),当光标先前接近可见矩形的一个边缘时,滚动位置会重置.就我而言,这是一个非常不受欢迎的副作用.
所以我的问题是:有没有更好的方法来做我想做的事情?
好吧,我正在寻找代码来为NSTextView进行"左/中/右"对齐.我观察到在文本菜单中,此功能存在,并且它链接到调用"alignCenter"选择器的第一个响应者.但是我无法让它发挥作用.
所以我开始阅读TextEdit的源代码.似乎Apple实现了它并在工具栏中显示.但是我无法找到它的位置.(它不在任何.nib文件中,并且没有与对齐或居中或左对齐相关的选择器等.)
所以任何人都可以告诉我:如何实现与文本菜单中的功能完全相同的功能.
要么
苹果公司把TextEdit程序中的文本对齐的源代码放在哪里?
提前致谢!!
我有一个NSTextView,用户可以将纯文本粘贴到其中.
当用户在粘贴板中有"foo"时,我希望粘贴"bar".换句话说,用户进入网络浏览器,选择"foo",cmd + c,切换到我的NSTextView,cmd + v,并在插入点出现"bar".
拜托,有谁知道如何处理这个问题?
编辑:是否有可能以某种方式使用readSelectionFromPasteboard:type:此?我只是不知道在我的被覆盖的textview的方法体中放什么..?
好的,我们在这里:
NSTextViewNSMutableAttributedString满足通过使用Rob的代码(将自定义属性保存在NSAttributedString中),我已经取得了一些进展(我正在设法将数据写入磁盘),但是我无法恢复它(= NSKeyedUnarchiverreturn nil)。
编码方式:
// where MAS --> NSMutableAttributedString
NSData* stringData = [NSKeyedArchiver archivedDataWithRootObject:MAS];
Run Code Online (Sandbox Code Playgroud)
解码:
NSMutableAttributedString* mas = (NSMutableAttributedString*)[NSKeyedUnarchiver unarchiveObjectWithData:dat];
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?任何可能的解决方法(即使不能使用NSCoder,我都怀疑它可以与RTF一起使用...)!
找不到任何线索来管理它。
默认情况下,NSTextView选择突出显示其文本容器的整个大小。它忽略行距,头或尾缩进等。但是在Pages应用程序选择中不突出显示那些辅助部分,它仅突出显示字符。即使文本容器的高度较小(前后段落间距),它也会突出显示行的所有高度。
我想实现这种行为,但不知道从哪里开始。我在这里搜索过,我在搜索过Apple文档,还尝试过示例项目。没有。
也许有人可以指引我正确的方向?谢谢!
我已经创建了一个NSTextView并设法使用getter来填充它,它是嵌入的滚动视图,并使用该.insertText()函数.
我怎么清空NSTextView呢?我已阅读文档,似乎没有功能.removeText().Apple允许您插入数据但不能以编程方式删除数据似乎有点奇怪.我已经搜索了高低的答案但空手而归.