@@ -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