如何在光标处设置字体?

时间:2015-02-08 02:46:15

标签: objective-c cocoa nstextview

我有一个NSTextView,我想在光标处设置字体(光标:插入点光标,闪烁条),意思是在光标处,字体变为Times New Roman(示例)。无论光标在哪里,我都希望字体改变。我试着做了

[self.textView.textStorage addAttributes:@{NSFontAttributeName: [NSFont fontWithName:@"Times New Roman" size:14]} range:NSMakeRange([[[self.textView selectedRanges] objectAtIndex:0] rangeValue].location, 0)];

但它没有用。还有另外一种方法吗?我尝试了很多东西,但仍然有问题。

1 个答案:

答案 0 :(得分:0)

首先,避免混淆"游标"会有所帮助。如在鼠标光标中(例如指向箭头或工字梁),我认为你的意思是,"光标"如插入点或选择。

将用于新键入文本的属性存储在文本视图的typingAttributes属性中。所以,你会这样做:

NSMutableDictionary* attributes = [textView.typingAttributes mutableCopy];
attributes[NSFontAttributeName] = [NSFont fontWithName:@"Times New Roman" size:14];
self.textView.typingAttributes = attributes;

当然,如果有选择,除了设置输入属性外,通常还需要更改所有选定范围内的字体。您可以使用rangesForUserCharacterAttributeChange