mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-16 11:42:04 +08:00
Fix: editable not working when keyboardType is set
This commit is contained in:
@ -8,6 +8,7 @@ import types = require("utils/types");
|
||||
export class EditableTextBase extends common.EditableTextBase {
|
||||
private _android: android.widget.EditText;
|
||||
private _textWatcher: android.text.TextWatcher;
|
||||
private _keyListenerCache: android.text.method.IKeyListener;
|
||||
/* tslint:disable */
|
||||
private _dirtyTextAccumulator: string;
|
||||
/* tslint:enable */
|
||||
@ -23,7 +24,7 @@ export class EditableTextBase extends common.EditableTextBase {
|
||||
public _createUI() {
|
||||
this._android = new android.widget.EditText(this._context);
|
||||
this._configureEditText();
|
||||
this.android.setTag(this.android.getKeyListener());
|
||||
this._keyListenerCache = this.android.getKeyListener();
|
||||
|
||||
var that = new WeakRef(this);
|
||||
|
||||
@ -164,7 +165,7 @@ export class EditableTextBase extends common.EditableTextBase {
|
||||
break;
|
||||
}
|
||||
|
||||
this._android.setInputType(newInputType);
|
||||
this._setInputType(newInputType);
|
||||
}
|
||||
|
||||
public _onReturnKeyTypePropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
||||
@ -203,7 +204,7 @@ export class EditableTextBase extends common.EditableTextBase {
|
||||
}
|
||||
|
||||
if (data.newValue) {
|
||||
this.android.setKeyListener(<android.text.method.IKeyListener>this.android.getTag());
|
||||
this.android.setKeyListener(this._keyListenerCache);
|
||||
}
|
||||
else {
|
||||
this.android.setKeyListener(null);
|
||||
@ -237,7 +238,7 @@ export class EditableTextBase extends common.EditableTextBase {
|
||||
break;
|
||||
}
|
||||
|
||||
editableTextBase.android.setInputType(inputType);
|
||||
editableTextBase._setInputType(inputType);
|
||||
}
|
||||
|
||||
public _onAutocorrectPropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
||||
@ -263,7 +264,7 @@ export class EditableTextBase extends common.EditableTextBase {
|
||||
break;
|
||||
}
|
||||
|
||||
editableTextBase.android.setInputType(inputType);
|
||||
editableTextBase._setInputType(inputType);
|
||||
}
|
||||
|
||||
public _onHintPropertyChanged(data: dependencyObservable.PropertyChangeData) {
|
||||
@ -274,4 +275,19 @@ export class EditableTextBase extends common.EditableTextBase {
|
||||
|
||||
editableTextBase.android.setHint(data.newValue + "");
|
||||
}
|
||||
|
||||
private _setInputType(inputType): void {
|
||||
this.android.setInputType(inputType);
|
||||
|
||||
// setInputType will change the keyListener so we should cache it again
|
||||
let listener = this.android.getKeyListener();
|
||||
if (listener) {
|
||||
this._keyListenerCache = listener;
|
||||
}
|
||||
|
||||
// clear the listener if editable is false
|
||||
if (!this.editable) {
|
||||
this.android.setKeyListener(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user