NativeScript TextField canPerformActionWithSender

时间:2019-03-22 17:44:45

标签: nativescript textfield nativescript-vue

我的应用程序中有一个自定义键盘(由按钮制成),我用它来将数字值填充到TextField中。当按下按钮时,我在清理数据的同时设置了TextField的文本-确保只有小数点后1位,没有输入字母,等等。

但是,我现在试图检测用户何时尝试将其粘贴到字段中,以便我可以完全阻止它,也可以在允许粘贴之前清理粘贴的文本。

到目前为止,我采用的方法是尝试在NativeScript TextField上实现canPerformActionWithSender方法。

我尝试了以下操作(我正在使用NativeScript Vue):

<TextField 
    ref="amount" 
    hint="$0.00" 
    @loaded="onTextFieldLoaded" 
    @unloaded="onTextFieldUnloaded" />

然后...

onTextFieldLoaded(event) {
    let textField = event.object
    textField.focus()

    nativeView.canPerformActionWithSender = (action, sender) => {
        // `action` may be 'paste' so I can handle that action here
    }
}

但这不起作用。有没有一种简单的方法可以在不创建自定义组件的情况下完成此任务?

1 个答案:

答案 0 :(得分:0)

我可以通过以下方法解决此问题:

UITextField.prototype.canPerformActionWithSender = function (action, sender) {
    return false;
}

这将禁用复制/粘贴/等。菜单完全。您可以更具体一些,并根据需要检查操作以仅禁用某些功能。

UITextField.prototype.canPerformActionWithSender = function (action, sender) {
    if (action == 'paste:') { 
       return false;
    }

    return true;
}