keyboard - 单击 Titanium 中 tableView 内的文本字段时隐藏键盘(模糊)

标签 keyboard titanium tableview textfield blur

我正在尝试在 Titanium 中获取一个表格,其中每行都有一个静态文本和一个可以输入内容的文本字段。

所以我去创建一行,其中左侧部分是静态文本,右侧部分是我的输入文本字段。 只是一个小问题,我无法通过点击键盘外部来隐藏键盘。

如果它是表格外的普通文本字段,我只会使用模糊方法,但在这种情况下我无法让它工作。

这是我到目前为止的代码: 知道它是如何工作的以及该解决方案是否对 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("点击", function(e){ textField.blur(); }); 程序中的上述代码段不起作用,因为窗口的 click 事件未触发由于 tableView 的高度,窗口被隐藏,并且您的点击在 tableView 上触发。如果您为 tableView 设置 backgroundColor 属性,您可以看到差异。所以我调整了 tableView 的高度,因此窗口中触发的点击和键盘消失了。

  2. 创建 textField 数组:您可以执行相同的操作,而无需创建 textField 数组,并且在 for 循环 内,您可以将 textField 创建为 var textField = Ti.UI.createTextField ();。但如果这样做,则无法始终隐藏键盘,因为只会为最后一个文本字段触发事件。因此我创建了 textField 数组

  3. 对于 Android,您还可以使用 Ti.UI.android.hideSoftKeybaord()方法。为此,只需更改代码中的 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
             }
        }
    }
    

关于keyboard - 单击 Titanium 中 tableView 内的文本字段时隐藏键盘(模糊),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16093642/

相关文章:

ios - 有没有办法在 UIKeyboardType.NumberPad 的左下角区域添加一个字母?

ios - 使用后退按钮导航时,Titanium titleImage 从左侧跳转

ios - 一个 View Controller 上的 3 个 Collection View

ios - Swift 中的简单 TableView 出现问题,错误 SIGNAL SIGART

arrays - 创建一个类的所有对象的数组

ios - 扩展 iOS 11 安全区域以包括键盘

python - 在 Python 中检测 NUMLOCK/CAPSLOCK/SCRLOCK keypress/keyup

java - 仅当用户确认选择时才在 JComboBox 上处理 actionPerformed

javascript - Appcelerator Titanium - openFileChooserDialog 不存在 : How to open a dialog to browse for a file?

javascript - Appcelerator:将自定义(动态) View 添加到按钮单击创建卡上的 ScrollView