Nativescript Angular拦截文本会在事件发生前更改吗?

时间:2018-02-14 08:48:57

标签: angular nativescript angular2-nativescript

我使用Angular nativescript TextField

<TextField   (textChange)="onTextChange($event)" ></TextField>

我想只允许&#34; a&#34;要插入到TextField中的字符 应该防止所有其他字符(&#34; b&#34;,&#34; c&#34;,....) - 意思是 - 阻止插入。

我已经知道我可以使用(textChange)事件然后删除字符 - 但那是太晚的事件

问题:

假设我有一个文本字段,我如何跨平台阻止输入某些字符?

1 个答案:

答案 0 :(得分:2)

对于Android,您可以通过明确设置setKeyListener android.widget.Edittext的允许实例(这是NativeScript中TextField后面的原生Android控件)来实现此目的

例如

export function onTfLoaded(args) {
    let tf = <TextField>args.object;

    let nativeTF;

    if (isAndroid) {
        let nativeTF = <android.widget.EditText>tf.nativeView; // on Android is android.widget.EditText
        nativeTF.setKeyListener(android.text.method.DigitsKeyListener.getInstance("zxc"));
    } else {
        let nativeTF = <UITextField>tf.nativeView;// for iOS is UITextField
    }

}

以上内容将允许用户仅输入ZXC(工作方式相同as setting digits),但解决方案仍会提示数字键盘。