2015-01-14 138 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); 
    } 
});