Skip to content

Commit 82f081d

Browse files
Hristo HristovHristo Hristov
authored andcommitted
fix android keyboard
1 parent 3384112 commit 82f081d

File tree

1 file changed

+22
-11
lines changed

1 file changed

+22
-11
lines changed

tns-core-modules/ui/editable-text-base/editable-text-base.android.ts

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,9 @@ function initializeEditTextListeners(): void {
7171
}
7272

7373
if (hasFocus) {
74+
owner.clearDismissTimer();
7475
owner.notify({ eventName: EditableTextBase.focusEvent, object: owner });
75-
owner.focus();
76-
}
77-
else {
76+
} else {
7877
if (owner._dirtyTextAccumulator || owner._dirtyTextAccumulator === "") {
7978
textProperty.nativeValueChange(owner, owner._dirtyTextAccumulator);
8079
owner._dirtyTextAccumulator = undefined;
@@ -130,6 +129,7 @@ export abstract class EditableTextBase extends EditableTextBaseCommon {
130129
private _inputType: number;
131130

132131
public _changeFromCode: boolean;
132+
public _dismissId: NodeJS.Timer;
133133

134134
public abstract _configureEditText(editText: android.widget.EditText): void;
135135

@@ -175,17 +175,28 @@ export abstract class EditableTextBase extends EditableTextBaseCommon {
175175
}
176176

177177
const activity = this._context as android.app.Activity;
178-
setTimeout(() => {
179-
const focused = activity.getCurrentFocus();
180-
if (!focused
181-
|| focused === nativeView
182-
|| !(focused instanceof android.widget.EditText)) {
183-
ad.dismissSoftInput(nativeView);
184-
}
185-
}, 100);
178+
if (!this._dismissId) {
179+
this._dismissId = setTimeout(() => {
180+
this._dismissId = null;
181+
const focused = activity.getCurrentFocus();
182+
if (!focused
183+
|| focused === nativeView
184+
|| !(focused instanceof android.widget.EditText)) {
185+
ad.dismissSoftInput(nativeView);
186+
}
187+
}, 100);
188+
}
189+
}
190+
191+
public clearDismissTimer(): void {
192+
if (this._dismissId) {
193+
clearTimeout(this._dismissId);
194+
this._dismissId = null;
195+
}
186196
}
187197

188198
public focus(): boolean {
199+
this.clearDismissTimer();
189200
const result = super.focus();
190201
if (result) {
191202
ad.showSoftInput(this.nativeViewProtected);

0 commit comments

Comments
 (0)