Как правильно установить тип подчеркивания под Какао - PullRequest
0 голосов
/ 26 июня 2019

ALL,

NSMutableDictionary* constattrs = [NSMutableDictionary dictionaryWithCapacity:5];
[attrs setObject:[NSNumber numberWithInt:( NSUnderlinePatternDot )] forKey:NSUnderlineStyleAttributeName];
[attrs setValue:style.GetUnderlineColour() forKey:NSUnderlineColorAttributeName];
[m_textView setTypingAttributes:attrs];

Приведенный выше код прекрасно компилируется и выполняется, но текст в представлении не становится подчеркнутым.

Я тестирую под OSX 10.13 с минимумом, необходимым для10.9.

Чего мне не хватает?

TIA!

[EDIT]:

    NSRange range = NSMakeRange(start, end-start);

    NSTextStorage* storage = [m_textView textStorage];
    if( style.HasFontUnderlined() )
    {
        NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
        [dict setObject:[NSNumber numberWithInt:( NSUnderlinePatternDot )] forKey:NSUnderlineStyleAttributeName];
        [dict setValue:style.GetUnderlineColour() forKey:NSUnderlineColorAttributeName];

        [storage addAtributes:dict range:range];
        [dict release];

Я получаю предупреждение о компиляции с кодом выше:

warning: instance method '-addAtributes:range:' not found (return type defaults to 'id'); did you mean '-addAttributes:range:'? [-Wobjc-method-access]

Вы можете помочь?

[/ EDIT]

1 Ответ

0 голосов
/ 26 июня 2019

Вам не хватает стиля подчеркивания.

[attrs setObject:[NSNumber numberWithInt:( NSUnderlineStyleSingle | NSUnderlinePatternDot )] forKey:NSUnderlineStyleAttributeName];
...