2017-02-13 17 views
0

Я использую привязки к NSObjectController в XIB. Когда я устанавливаю новый объект контента NSObjectController, единственным значением текстового поля, которое не изменяется, является тот, который имеет первого ответчика. Изменения модели без проблем.Привязки не обновляются NSTextField

Если я не использую пользовательский геттер/сеттер, текстовое поле, которое имеет firstResponder (isBeingEdited), изменяется без проблем.

Что случилось с моим KVC, KVO?

Мой пользовательский геттер/сеттер находится ниже рисунка. PS: Я не хочу делать окно первым ответчиком до того, как я изменю объект контента, чтобы он работал.

enter image description here

static const CGFloat MMsInOneInch = 25.4; 
static const CGFloat inchesInOneMM = 0.0393700787402; 
- (void)setPaperWidth:(CGFloat)paperWidth 
{ 
    [self willChange]; 
    CGFloat newWidth = paperWidth * [self conversionKoeficientToDefaultUnitType]; 
    if (!_isChangingPaperSize) { 
     if (self.paperSize == PPPaperSizeA4 && fabs(newWidth - widthSizeOfA4) > 0.001) { 
      [self setPaperSize:PPPaperSizeCustom]; 
     } 
     if (self.paperSize == PPPaperSizeUSLetter && fabs(newWidth - widthSizeOfUSLetter) > 0.001) { 
      [self setPaperSize:PPPaperSizeCustom]; 
     } 
    } 
    [self willChangeValueForKey:@"paperWidth"]; 
    _paperWidth = newWidth; 
    [self didChangeValueForKey:@"paperWidth"]; 
    [self didChange]; 
} 


- (CGFloat)conversionKoeficientToDefaultUnitType 
{ 
    if ([self defaultUnitType] == [self unitType]) { 
     return 1; 
    } 
    if ([self defaultUnitType] == PPPrintSettingsUnitTypeMM) { 
     return MMsInOneInch; 
    } 
    if ([self defaultUnitType] == PPPrintSettingsUnitTypeInch) { 
     return inchesInOneMM; 
    } 
    return 1; 
} 

- (CGFloat)paperWidth 
{ 
    return _paperWidth/[self conversionKoeficientToDefaultUnitType]; 
} 

ответ

0

Я забыл, что я использую NSNumberFormatter с мин/макс значение, которое, когда блокирующий NSTextField обновить.

enter image description here