Наблюдение за ключом и значением и RoboVM

Я хочу определить наблюдателя в проекте 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");
        }
    });

это зарегистрирует следующую строку: title: null

При нажатии кнопки заголовок на экране будет изменен, но наблюдатель никогда не будет вызван. Есть идеи, что не так в коде?


person Hendrik Ebbers    schedule 14.01.2015    source источник


Ответы (1)


Вы пытаетесь наблюдать то, что не поддается наблюдению. На 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);
    }
});
person ntherning    schedule 15.01.2015