NativeScript TextField canPerformActionWithSender - PullRequest
0 голосов
/ 22 марта 2019

У меня есть пользовательская клавиатура (сделанная из кнопок) в моем приложении, и я использую ее для ввода числового значения в TextField. Когда кнопка нажата, я устанавливаю текст TextField во время очистки данных - следя за тем, чтобы был только 1 десятичный знак, не было введено никаких букв и т. Д.

Однако теперь я пытаюсь определить, когда пользователь пытается вставить поле, чтобы я мог либо полностью его предотвратить, либо санировать вставленный текст, прежде чем разрешить его вставку.

Подход, который я до сих пор использовал, состоит в том, чтобы попытаться реализовать метод canPerformActionWithSender для NativeScript TextField.

Я пробовал следующее (я использую 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 голосов
/ 23 марта 2019

Я смог решить эту проблему следующим образом:

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

Это отключит копирование / вставку / и т.д. меню полностью. Вы можете быть более конкретным и проверить действие, чтобы отключить только определенные функции, если хотите.

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

    return true;
}
...