如何为TextField [Mac OS]创建KVO?

时间:2013-11-09 20:40:30

标签: objective-c key-value-observing

我需要为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]];
}

它不起作用。哪里出错?

1 个答案:

答案 0 :(得分:1)

就目前而言,您正在观察text1属性中的更改,而不是stringValue,即使这样,只有在setStringValue:被明确调用时才会有效(它不是由字段的输入上下文调用)。你最好成为它的代表并实施controlTextDidChange:,而不是尝试KVO。