Titanium:处理文本字段上的后退按钮事件

时间:2012-09-18 15:59:10

标签: android titanium back-button

问题

我想使用钛处理文本字段上的后退按钮。

我知道有一个事件android:返回窗口,但它不会在文本字段上触发。

如何使用钛处理文本字段上的后退按钮(或键盘隐藏事件)?

编辑:这里有一些代码和说明来说明我想说的话:

重现步骤:

  1. 点击文字字段>焦点事件被触发,键盘显示
  2. 点击按钮>键盘被隐藏但未调用模糊事件且文本字段未失去焦点
  3. 代码:

    var textfield = Ti.UI.createTextfield();
    textfield.addEventListener('android:back', function() {
      // this method is never called, so this event does not run on textfield
    });
    
    textfield.addEventListener('focus', function() {
      // this method is called at step 1
    });
    
    textfield.addEventListener('blur', function() {
      // this method is not called at step 2 because 
      // the back button only hide the keyboard but the focus is not lost
    });
    
    // what code should I use to catch event when the keyboard is hidden 
    // when pressing the back button ?
    

1 个答案:

答案 0 :(得分:0)

键盘关闭时会触发blur事件。 Here is the doc for it.

假设您创建了textField类型的Titanium.UI.TextField对象,您可以非常轻松地收听它:

textField.addEventListener('blur', function(e) {
    var val = e.value; // Get current value when the keyboard closed (the right way) as opposed to textField.value (the wrong way)
    alert("The text is : "+value);
});

如果您想收听android:back事件,您必须在窗口上收听。

var win = Ti.UI.currentWindow; 
win.addEventListener('android:back', function(e) {
    // do crazy things
});

根据文档,这应该有效,如果不是可能是Titanium的错误?