我需要为TextField1创建KVO,并将TextField1的值传输值更改为TextFiled2。我试过了:
//.h
@property (weak) IBOutlet NSTextFieldCell *text1;
@property (weak) IBOutlet NSTextFieldCell *text2;
//.m
-(id) init
{
self = [super init];
if (self)
{
[self addObserver:self forKeyPath: @"text1" options:NSKeyValueObservingOptionOld context:nil];
}
return self;
}
-(void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
[self.text2 setStringValue:[self.text1 stringValue]];
}
它不起作用。哪里出错?
答案 0 :(得分:1)
就目前而言,您正在观察text1
属性中的更改,而不是stringValue
,即使这样,只有在setStringValue:
被明确调用时才会有效(它不是由字段的输入上下文调用)。你最好成为它的代表并实施controlTextDidChange:
,而不是尝试KVO。