0

我疯了,我在网上到处找,但我总是找到相同的 KVO 观察代码。然而我的 observeValueForKeyPath: 从未被调用过;这是我用来观察 UILabel taxmeterValue 的简单代码:

-(id) initWithCoder:(NSCoder *)aDecoder{
    self=[super initWithCoder:aDecoder];
    if (self){
                [taximeterValue addObserver:self forKeyPath:@"text" options:(NSKeyValueObservingOptionNew |
                                                               NSKeyValueObservingOptionOld) context:NULL];
    }
    return self;
}


-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void*)context {
if ([keyPath isEqual:@"text"]) {
    if (myBookingAlert) myBookingAlert.taximeterValue=self.taximeterValue;
    NSLog(@"the text changed");
    // put your logic here
}
// be sure to call the super implementation
// if the superclass implements it
[super observeValueForKeyPath:keyPath
                     ofObject:object
                       change:change
                      context:context];

}

4

1 回答 1

1

几种可能的解释:

  1. taximeterValue是零。
  2. 什么都没有改变taximeterValue.text
  3. 某些东西正在taximeterValue.text以不符合 KVO 的方式发生变化。每次更改都taximeterValue.text必须通过调用来完成,或者由适当的和消息[taximeterValue setText:]包围。willChangeValueForKey:didChangeValueForKey:
于 2013-05-29T20:01:39.040 回答