2012-06-11 2 views
0

У меня есть TableView, на котором выбирают столбец строки будет вызывать переопределенный методатрибут Текст изменен для 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; 
} 

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

ответ

0

После вызова метода -[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])]; 
} 
Смежные вопросы