Атрибут текста изменен для NSTextFieldCell при выборе

У меня есть табличное представление, в котором выбор столбца строки вызовет переопределенный метод

- (void)selectWithFrame:(NSRect)inCellFrame inView:(NSView *)inControlView editor:(NSText *)textObj delegate:(id)anObject start:(NSInteger)selStart length:(NSInteger)selLength {
  // here do some text positioning
         [super selectWithFrame:inCellFrame inView:inControlView editor:textObj delegate:anObject start:selStart length:selLength];
}

Я также возвращаю редактор полей для ячейки, как показано ниже:

- (NSTextView *)fieldEditorForView:(NSView *)inControlView {
   MYTextView* fieldEditor = [[[MYTextView alloc] initWithFrame:NSZeroRect] autorelease];
   return fieldEditor;
}

Когда ячейка выделена, текст внутри ячейки меняет свой атрибут. Например, размер шрифта, шрифт, стиль шрифта и т. Д. Изменяются соответственно, кажется, я не могу контролировать его, когда текст находится в режиме выбора. Я не хочу изменять свойства шрифта даже после выбора. Как я могу избежать этих изменений в текстовых атрибутах?


person boom    schedule 11.06.2012    source источник


Ответы (1)


После вызова метода -[super selectWithFrame:...] будут отражены изменения свойств текста. Решение ниже:

- (void)selectWithFrame:(NSRect)inCellFrame
                 inView:(NSView *)inControlView
                 editor:(NSText *)textObj
               delegate:(id)anObject
                  start:(NSInteger)selStart
                 length:(NSInteger)selLength {
    // here do some text positioning

    [super selectWithFrame:inCellFrame
                    inView:inControlView
                    editor:textObj
                  delegate:anObject
                     start:selStart
                    length:selLength];

    NSMutableAttributedString* text = [textObj textStorage];

    NSMutableParagraphStyle *alignmentStyle = [[NSParagraphStyle defaultParagraphStyle] autorelease];
    [alignmentStyle setAlignment:NSLeftTextAlignment];

    NSDictionary* attributes = [NSMutableDictionary dictionary];
    [attributes setValue:[NSFont boldSystemFontOfSize:[NSFont systemFontSize]] forKey:NSFontAttributeName];
    [attributes setValue:leftAlignmentStyle forKey:NSParagraphStyleAttributeName];

    [text setAttributes:attributes range:NSMakeRange(0, [text length])];
}
person boom    schedule 13.07.2012