NSTextField - 使所选文本变为粗体,斜体或下划线?

时间:2011-02-01 11:07:10

标签: objective-c cocoa nstextfield

我有一个NSTextField,用户可以在其中编写文本。我希望能够制作3个按钮:粗体,斜体和下划线;这些按钮应该将文本字段中的用户选择更改为粗体,斜体或下划线。

任何人都可以给我一个关于如何做到这一点的指针吗?

2 个答案:

答案 0 :(得分:7)

第一件事是启用富文本支持,您可以通过检查检查器中的“富文本”选项或使用setAllowsEditingTextAttributes:的代码在Interface Builder中执行此操作。

然后就是NSAttributedString s。

但最大的问题是,您需要对所选文本应用更改。 NSTextField s无法做到这一点。只有NSTextView s。

如果您可以更改它,请继续操作,这将使事情变得更容易。但是,如果您确实需要坚持使用NSTextField,则可能需要访问字段编辑器。每个窗口都有一个关联的,它是幕后文本的处理方式。

NSTextView *editor = (NSTextView *)[window fieldEditor:YES forObject:myTextField]

然后你可以愉快地调用NSTextView的方法setSelectedTextAttributes:

详细了解字段编辑器here at Applein 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];