NativeScript TextField canPerformActionWithSender

NativeScript TextField canPerformActionWithSender

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

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

到目前为止我采用的方法是尝试在 NativeScript TextField.

上实现 canPerformActionWithSender 方法

我尝试了以下方法(我使用的是 NativeScript Vue):

<TextField 
    ref="amount" 
    hint="[=10=].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
    }
}

但这不起作用。有没有一种无需创建自定义组件即可完成此操作的简单方法?

我可以通过以下方式解决这个问题:

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

这将禁用 copy/paste/etc。菜单完全。如果您愿意,您可以更具体地检查操作以仅禁用某些功能。

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

    return true;
}