我有两个文本字段:一个用于宽度,一个用于高度。
假设起始值为1080 x 720.如果用户将720更改为360,我想自动将1080更改为540.
最好的方法是什么?
答案 0 :(得分:1)
在您的笔尖中添加一个数字格式化程序,并将其配置为将字段限制为整数值,并将控制器指定为两个文本字段的委托。
您还需要在显示视图时填写初始值并更新文本字段。此版本基于NSPopoverDelegate,但您可以对其进行调整。
@property (assign) NSUInteger width;
@property (assign) NSUInteger height;
-(void)awakeFromNib {
self.numberFormatter.minimumFractionDigits = 0;
self.numberFormatter.maximumFractionDigits = 0;
}
-(void)popoverWillShow:(NSNotification *)notification {
self.width = ___;
self.height = ___;
self.widthField.stringValue = @"";
self.heightField.stringValue = @"";
}
-(void)controlTextDidChange:(NSNotification *)obj {
NSTextField *sender = obj.object;
NSTextView *textView = [obj.userInfo objectForKey:@"NSFieldEditor"];
NSString *stringValue = textView.string;
NSNumber *numberValue = [self.numberFormatter numberFromString:stringValue];
if (!stringValue.length || !numberValue) {
self.resizeButton.enabled = NO;
} else {
NSInteger integerValue =
[[self.numberFormatter numberFromString:stringValue] integerValue];
if (self.widthField == sender) {
self.heightField.integerValue =
self.height * integerValue / self.width;
} else if (self.heightField == sender) {
self.widthField.integerValue =
self.width * integerValue / self.height;
}
self.resizeButton.enabled = YES;
}
}
答案 1 :(得分:0)
对于第一个问题,只计算比率(除以另一个):1080是1.5倍720所以如果用户将720更改为360只需要360 * 1.5来获取值(反之亦然540 / 1.5)如果用户改变了1080,则代替720的值。
没有嵌入式选项让NSTextField只采用偶数。