代码之家  ›  专栏  ›  技术社区  ›  Eimantas

键值观察与按键状态

  •  3
  • Eimantas  · 技术社区  · 16 年前

    我试图观察复选框状态,并在复选框状态更改时在应用程序中进行适当的更改。在使用复选框管理窗口的窗口管理器中,我设置了以下观察者:

    - (void)awakeFromNib
    {
      [myCheckBox addObserver:self 
                      forKeyPath:@"state" 
                         options:(NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld) 
                         context:NULL];
    }
    
    - (void)dealloc
    {
      [myCheckBox removeObserver:self forKeyPath:@"state"];
    }
    
    - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
    {
      NSLog(@"KeyPath: %@", keyPath);
      NSLog(@"ofObject: %@", object);
      NSLog(@"change: %@", change);
    }
    

    我还将myCheckBox连接到文件所有者(即窗口控制器)和窗口中相应的checkbox。但是当我运行我的应用程序时 observeValueForKeyPath:ofObject:change:context: 方法从未被调用。

    我做错什么了?

    2 回复  |  直到 16 年前
        1
  •  9
  •   Alexander    6 年前

    -awakeFromNib 检查一下 myCheckbox

    编辑: NSButton.state 具有与相同的值 NSButton.cell!.state \.cell!.state

        2
  •  2
  •   Jon Hess    16 年前

    除非记录为键值兼容,否则不应期望给定类的访问器实现KVO支持。

    推荐文章