隐藏键盘(模糊),当点击一个textField在一个tableView在钛



我想在Titanium中获得一个表,其中每行都有一个静态文本和一个textField,我可以在其中输入一些东西。

我创建了一行左边是静态文本右边是输入文本域。只是个小问题,我无法通过点击键盘的外部来隐藏键盘。

如果它是一个普通的textField外的表,我只会使用模糊方法,但在这种情况下,我不能得到它的工作。

这是我到目前为止的代码:这是如何工作的,如果解决方案是有效的iOS和Android?

var winAddObjectView = Titanium.UI.currentWindow;
var tableAddObjectData = [
    {title:'name', hintText:'item name (optional)'},
    {title:'track no.', hintText:'object tracking code'}
];
var tableAddObjectRowData = [];
for (var i = 0; i < tableAddObjectData.length; i++) {
    var title = Ti.UI.createLabel({
        text:tableAddObjectData[i].title,
        textAlign:"right",
        left:"20",
        height:'auto',
        width:'68',
        color:'#526691',
        font:{fontSize:12, fontWeight:'bold'},
    });
    var textField = Ti.UI.createTextField({
        hintText:tableAddObjectData[i].hintText,
        textAlign:"left",
        left:"96",
        height:'auto',
        width:'184',
        color:'#4C4C4C',
        font:{fontSize:12, fontWeight:'bold'},
    });
    winAddObjectView.addEventListener("click", function(e){
        textField.blur();
    });
    var row = Ti.UI.createTableViewRow({
        height:"45",
    });
    row.add(title);
    row.add(textField);
    tableAddObjectRowData.push(row);
}
var tableAddObjectView = Ti.UI.createTableView({
    headerTitle:'Enter Tracking Information',
    style:Titanium.UI.iPhone.TableViewStyle.GROUPED,
    backgroundColor:'transparent',
    data:tableAddObjectRowData,
});
winAddObjectView.add(tableAddObjectView)

我在你的代码中做了一些改变。请试试这个

var tableAddObjectRowData = [];
var textFields = [];              //Created an array of textFields
for (var i = 0; i < tableAddObjectData.length; i++) {
    var title = Ti.UI.createLabel({
        text:tableAddObjectData[i].title,
        textAlign:"right",
        left:"20",
        height:'auto',
        width:'68',
        color:'#526691',
        font:{fontSize:12, fontWeight:'bold'},
    });
    textFields[i] = Ti.UI.createTextField({            //Creating the textField
        hintText:tableAddObjectData[i].hintText,
        textAlign:"left",
        left:"96",
        height:'auto',
        width:'184',
        color:'#4C4C4C',
        font:{fontSize:12, fontWeight:'bold'},
    });
    var row = Ti.UI.createTableViewRow({
        height:"45",
    });
    row.add(title);
    row.add(textFields[i]);
    tableAddObjectRowData.push(row);
}
var tableAddObjectView = Ti.UI.createTableView({
    headerTitle:'Enter Tracking Information',
    style:Titanium.UI.iPhone.TableViewStyle.GROUPED,
    backgroundColor:'transparent',
    data:tableAddObjectRowData,
    height : (tableAddObjectRowData.length * 45) + 60     //Added the height property for the tableView
});
winAddObjectView.addEventListener("click", hideSoftKeyboard);  //added event listener to the window, moved this to out of the loop
function hideSoftKeyboard(){                  //Added function to hide the keyboard
    for(var i=0; i<textFields.length; i++){
        textFields[i].blur();             //Hiding each keyboards
    }
}
winAddObjectView.add(tableAddObjectView);

  1. winAddObjectView.addEventListener("click", function(e){ textField.blur(); });上面的代码段在你的程序没有工作,因为click事件的窗口没有触发由于tableView的高度,窗口被隐藏,你的点击在tableView上触发。如果你为tableView设置backgroundColor属性,你可以看到区别。所以我调整了tableView的高度因此点击在窗口中触发键盘消失了

  2. 创建textField数组:您可以在不创建textField数组的情况下做同样的事情,并且在for loop中您可以将textField创建为var textField = Ti.UI.createTextField();。但是如果你这样做,你不能隐藏键盘所有的时间,因为事件将为最后一个textField被触发。因此,我创建了textField数组

  3. 对于Android,您也可以使用ti . ui .android. hidesoftkeyboard()方法。为此,只需在代码中更改hideSoftkeyboard()方法,如下所示

    function hideSoftKeyboard(){                  //Added function to hide the keyboard
        if(Ti.Platform.osname === 'android'){
             Ti.UI.Android.hideSoftKeyboard();
        } else {
             for(var i=0; i<textFields.length; i++){
                  textFields[i].blur();             //Hiding each keayboards
             }
        }
    }
    

相关内容

  • 没有找到相关文章

最新更新