2012-04-27 155 views
0

在我爲Mac OSX構建的產品中,我需要支持10.5,10.6和10.7。 我正在使用NSTextView作爲編輯器。我用它來顯示文字和圖像。我有關於突出顯示的要求。這必須與MS Word完全一樣。在MS Word中,您可以選擇一個範圍並將其更改爲黃色。NSTextView突出顯示

我用setMarkedTextAttributes做了同樣的事情:但是這對內嵌圖像不起作用。所以我嘗試使用LayoutManager並設置背景顏色,但它似乎也沒有工作。

另外一點突出顯示是切換,所以如果我選擇相同的文本範圍並再次突出顯示它,它應該不被強調。爲此,我將所有的NSRange存儲在一個列表中,並檢查它是否已被突出顯示。我覺得我做錯了什麼。所以我試圖得到NSRect,然後應用顏色可能是?

回答

2

設置背景顏色爲範圍在NSAttributedString:

NSMutableAttributedString *mattrstg = [textView textStorage]; 
[mattrstg addAttribute:NSBackgroundColorAttributeName value:colorHighlighter range:range]; 
+3

而現有的屬性將是你的是什麼,是不是已經突出顯示的記錄。所以,要切換高亮你可以做'[mattrstg enumerateAttribute:NSBackgroundColorAttributeName inRange:rangeToChange options:0 usingBlock:^(id value,NSRange range,BOOL * stop){if(value)[mattrstg removeAttribute:NSBackgroundColorAttributeName range:range]; else [mattrstg addAttribute:NSBackgroundColorAttributeName value:colorHighlighter range:range]; }];' – 2012-04-27 20:49:00