diff --git a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIText.java b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIText.java index 33de122d452..2eb723f98e3 100644 --- a/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIText.java +++ b/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiUIText.java @@ -109,6 +109,15 @@ protected void onLayout(boolean changed, int left, int top, int right, int botto super.onLayout(changed, left, top, right, bottom); TiUIHelper.firePostLayoutEvent(proxy); } + + @Override + public boolean onKeyPreIme(int keyCode, KeyEvent event) + { + if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) { + TiUIHelper.fireKeyboarDismissedEvent(proxy); + } + return super.onKeyPreIme(keyCode, event); + } } public TiUIText(TiViewProxy proxy, boolean field) diff --git a/android/titanium/src/java/org/appcelerator/titanium/TiC.java b/android/titanium/src/java/org/appcelerator/titanium/TiC.java index 2a7b75e327d..14ee7ac1ba9 100644 --- a/android/titanium/src/java/org/appcelerator/titanium/TiC.java +++ b/android/titanium/src/java/org/appcelerator/titanium/TiC.java @@ -113,6 +113,11 @@ public class TiC */ public static final String EVENT_DESTROY = "destroy"; + /** + * @module.api + */ + public static final String EVENT_DISMISS_KEYBOARD = "dismissKeyboard"; + /** * @module.api */ diff --git a/android/titanium/src/java/org/appcelerator/titanium/util/TiUIHelper.java b/android/titanium/src/java/org/appcelerator/titanium/util/TiUIHelper.java index 81317e9046d..37cd235d65e 100644 --- a/android/titanium/src/java/org/appcelerator/titanium/util/TiUIHelper.java +++ b/android/titanium/src/java/org/appcelerator/titanium/util/TiUIHelper.java @@ -1089,4 +1089,11 @@ public static void firePostLayoutEvent(TiViewProxy proxy) proxy.fireEvent(TiC.EVENT_POST_LAYOUT, null, false); } } + + public static void fireKeyboarDismissedEvent(TiViewProxy proxy) + { + if (proxy != null && proxy.hasListeners(TiC.EVENT_DISMISS_KEYBOARD)) { + proxy.fireEvent(TiC.EVENT_DISMISS_KEYBOARD, null, true); + } + } } diff --git a/apidoc/Titanium/UI/SearchBar.yml b/apidoc/Titanium/UI/SearchBar.yml index 596086d6abe..f25b50fcda8 100644 --- a/apidoc/Titanium/UI/SearchBar.yml +++ b/apidoc/Titanium/UI/SearchBar.yml @@ -91,6 +91,11 @@ events: - name: blur summary: Fired when the search bar loses focus. + - name: dismissKeyboard + summary: Fired when the keyboard is dismissed by pressing the BACK button. + since: {android: "3.6.0"} + platforms: [android] + - name: bookmark summary: Fired when the bookmark button is pressed. diff --git a/apidoc/Titanium/UI/TextArea.yml b/apidoc/Titanium/UI/TextArea.yml index d8a3cc2461e..bd1b0987f9b 100644 --- a/apidoc/Titanium/UI/TextArea.yml +++ b/apidoc/Titanium/UI/TextArea.yml @@ -320,7 +320,12 @@ events: - name: value summary: New value of this text area. type: String - + + - name: dismissKeyboard + summary: Fired when the keyboard is dismissed by pressing the BACK button. + since: {android: "3.6.0"} + platforms: [android] + - name: focus summary: Fired when this text area gains focus. properties: diff --git a/apidoc/Titanium/UI/TextField.yml b/apidoc/Titanium/UI/TextField.yml index 3d9754e1d6a..d28cfec53a5 100644 --- a/apidoc/Titanium/UI/TextField.yml +++ b/apidoc/Titanium/UI/TextField.yml @@ -441,14 +441,19 @@ events: - name: value summary: New value of the field. type: String - + + - name: dismissKeyboard + summary: Fired when the keyboard is dismissed by pressing the BACK button. + since: {android: "3.6.0"} + platforms: [android] + - name: focus summary: Fired when the field gains focus. properties: - name: value summary: Value of the field. type: String - + - name: return summary: Fired when the return key is pressed on the keyboard. properties: