Nativescript 仅允许文本字段中的数值

Nativescript 仅允许文本字段中的数值,nativescript,Nativescript,如何将文本字段中的输入仅限于数值?一个经常建议的建议/解决方案是将keyboardType属性设置为“number”,但这在iOS上不起作用。我仍然可以在文本字段中输入任何字符。对于iOS,这可能有用:-这是一个插件,可以将键盘更改为严格的数字键盘,您还可以调整其一些功能。最简单的方法是收听textChange事件并覆盖文本中的任何非数字字符,差不多 function onTextChange(args: PropertyChangeData) { let value: any = pa

如何将文本字段中的输入仅限于数值?一个经常建议的建议/解决方案是将keyboardType属性设置为“number”,但这在iOS上不起作用。我仍然可以在文本字段中输入任何字符。

对于iOS,这可能有用:-这是一个插件,可以将键盘更改为严格的数字键盘,您还可以调整其一些功能。

最简单的方法是收听
textChange
事件并覆盖文本中的任何非数字字符,差不多

function onTextChange(args: PropertyChangeData) {
    let value: any = parseFloat(args.value);
    if (isNaN(value)) {
        value = '';
    } else {
        value = value.toString();
    }
    if (value != args.value) {
        const object = <any>args.object;
        object.text = value;
        if (object.android) {
            object.android.setSelection(value.length);
        }
    }
}
函数onTextChange(args:PropertyChangeData){
let值:any=parseFloat(args.value);
如果(isNaN(值)){
值=“”;
}否则{
value=value.toString();
}
如果(值!=参数值){

const object=

我对插件进行了快速测试。软件键盘已更改,但我仍然可以从硬件键盘输入所有字符,还可以复制和粘贴任何文本…我说的是在真实设备上的使用。不是sim卡。我也是,蓝牙键盘和长触式粘贴上下文菜单。这是一个硬件键盘,对吗?插头in是为了给你一个数字软键盘,而不是为了阻止通过外部方式输入其他字符。所以我想你需要“文本更改”监听输入并以这种方式过滤掉任何不相关的字符。这看起来像是一种黑客行为,而不是一种解决方案。对已经允许和显示的值进行后期编辑。这是一种意图,一种跨平台的黑客行为。但即使您更喜欢使用确切的本机解决方案,逻辑也或多或少是相同的。重写委托回调并过滤e input.UITextFieldDelegateImpl中的非数字字符是私有的。我没有找到任何方法来重写它的一个函数。在_delegate属性上动态执行该操作没有任何效果。您不能只重写委托实例中的函数,因为它是本机对象,您必须实现自己的委托,类似于此,修改parti您需要的方法。似乎创建一个全新的自己的委托实现是唯一的方法。多么痛苦。。。