我有一个NSTextField,用户可以在其中编写文本。我希望能够制作3个按钮:粗体,斜体和下划线;这些按钮应该将文本字段中的用户选择更改为粗体,斜体或下划线。
任何人都可以给我一个关于如何做到这一点的指针吗?
答案 0 :(得分:7)
第一件事是启用富文本支持,您可以通过检查检查器中的“富文本”选项或使用setAllowsEditingTextAttributes:
的代码在Interface Builder中执行此操作。
然后就是NSAttributedString
s。
但最大的问题是,您需要对所选文本应用更改。 NSTextField
s无法做到这一点。只有NSTextView
s。
如果您可以更改它,请继续操作,这将使事情变得更容易。但是,如果您确实需要坚持使用NSTextField
,则可能需要访问字段编辑器。每个窗口都有一个关联的,它是幕后文本的处理方式。
NSTextView *editor = (NSTextView *)[window fieldEditor:YES forObject:myTextField]
然后你可以愉快地调用NSTextView的方法setSelectedTextAttributes:
。
详细了解字段编辑器here at Apple和in CocoaDev
答案 1 :(得分:2)
假设你的NSTextfield *是 textField ,下面的代码强调了选择:
NSMutableAttributedString * as = [[[textField attributedStringValue] mutableCopy] autorelease];
[as beginEditing];
[as addAttribute:NSUnderlineStyleAttributeName
value:[NSNumber numberWithInt:NSUnderlineStyleSingle]
range:[[[textField window] fieldEditor:YES forObject:textField] selectedRange]];
[as endEditing];
[textField setAttributedStringValue:as];