【问题标题】:NativeScript TextField canPerformActionWithSenderNativeScript TextField canPerformActionWithSender
【发布时间】:2019-08-13 18:26:56
【问题描述】:

我的应用程序中有一个自定义键盘(由按钮制成),我正在使用它将数值填充到 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
    }
}

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

【问题讨论】:

  • 我认为您将不得不扩展 UITextField 以覆盖此方法并在 TextField 类的 createNativeView 方法中返回相同的实例。

标签: nativescript textfield nativescript-vue


【解决方案1】:

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

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

这将禁用复制/粘贴/等。菜单完全。如果您愿意,您可以更具体地检查操作以仅禁用某些功能。

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

    return true;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-25
    • 1970-01-01
    • 2020-05-03
    • 2020-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多