0
XIB内のNSObjectControllerへのバインディングを使用します。 NSObjectControllerの新しいコンテンツオブジェクトを設定すると、変更されない唯一のテキストフィールド値は最初のレスポンダを持つものです。モデルは問題なく変更されます。バインディングはNSTextFieldを更新しません
私がカスタムゲッター/セッターを使用しないと、firstResponder(isBeingEdited)を持つテキストフィールドが問題なく変更されます。
私のKVC、KVOの何が問題なのですか?
私のカスタムゲッター/セッターは下にあります。 PS:コンテンツオブジェクトを変更して機能させる前に、ウィンドウを最初のレスポンダにしたくありません。
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];
}