2015-01-14 70 views
1

我想在一个roboVM项目中定义一个观察者。为此,我使用关键值观察器功能。这里是我的代码:Key-Value Observing和RoboVM

button.setTitle("Click me!", UIControlState.Normal); 

    button.addOnTouchUpInsideListener(new UIControl.OnTouchUpInsideListener() { 
     @Override 
     public void onTouchUpInside(UIControl control, UIEvent event) { 
      button.setTitle("Click #" + (++clickCount), UIControlState.Normal); 
     } 
    }); 

    Foundation.log("title: " + button.getKeyValueCoder().getValue("title")); 

    button.addKeyValueObserver("title", new NSKeyValueObserver() { 
     @Override 
     public void observeValue(String keyPath, NSObject object, NSKeyValueChangeInfo change) { 
      Foundation.log("2"); 
     } 
    }); 

这将记录下面一行: 标题:空

当单击该按钮标题会在屏幕上进行更改,但观察者将永远不会被调用。任何想法在代码中有什么错误?

回答

2

您正在尝试观察不可观察的事物。 UIButton没有title财产。然而,有titleLabel财产是一个UILabel它有一个text财产,你可以观察到:

Foundation.log("titleLabel.text: " + button.getKeyValueCoder().getValue("titleLabel.text")); 

button.addKeyValueObserver("titleLabel.text", new NSKeyValueObserver() { 
    @Override 
    public void observeValue(String keyPath, NSObject object, NSKeyValueChangeInfo change) { 
     Foundation.log(keyPath + " " + object + " " + change); 
    } 
});