@@ -117,6 +117,16 @@ var KEYBOARD_OPEN_CSS = 'keyboard-open';
117
117
*/
118
118
var SCROLL_CONTAINER_CSS = 'scroll-content' ;
119
119
120
+ /**
121
+ * Debounced keyboardFocusIn function
122
+ */
123
+ var debouncedKeyboardFocusIn = ionic . debounce ( keyboardFocusIn , 200 , true ) ;
124
+
125
+ /**
126
+ * Debounced keyboardNativeShow function
127
+ */
128
+ var debouncedKeyboardNativeShow = ionic . debounce ( keyboardNativeShow , 100 , true ) ;
129
+
120
130
/**
121
131
* Ionic keyboard namespace.
122
132
* @namespace keyboard
@@ -150,6 +160,11 @@ ionic.keyboard = {
150
160
*/
151
161
isLandscape : false ,
152
162
163
+ /**
164
+ * Whether the keyboard event listeners have been added or not
165
+ */
166
+ isInitialized : false ,
167
+
153
168
/**
154
169
* Hide the keyboard, if it is open.
155
170
*/
@@ -168,6 +183,38 @@ ionic.keyboard = {
168
183
if ( keyboardHasPlugin ( ) ) {
169
184
cordova . plugins . Keyboard . show ( ) ;
170
185
}
186
+ } ,
187
+
188
+ /**
189
+ * Remove all keyboard related event listeners, effectively disabling Ionic's
190
+ * keyboard adjustments.
191
+ */
192
+ disable : function ( ) {
193
+ if ( keyboardHasPlugin ( ) ) {
194
+ window . removeEventListener ( 'native.keyboardshow' , debouncedKeyboardNativeShow ) ;
195
+ window . removeEventListener ( 'native.keyboardhide' , keyboardFocusOut ) ;
196
+ } else {
197
+ document . body . removeEventListener ( 'focusout' , keyboardFocusOut ) ;
198
+ }
199
+
200
+ document . body . removeEventListener ( 'ionic.focusin' , debouncedKeyboardFocusIn ) ;
201
+ document . body . removeEventListener ( 'focusin' , debouncedKeyboardFocusIn ) ;
202
+
203
+ window . removeEventListener ( 'orientationchange' , keyboardOrientationChange ) ;
204
+
205
+ if ( window . navigator . msPointerEnabled ) {
206
+ document . removeEventListener ( "MSPointerDown" , keyboardInit ) ;
207
+ } else {
208
+ document . removeEventListener ( 'touchstart' , keyboardInit ) ;
209
+ }
210
+ ionic . keyboard . isInitialized = false ;
211
+ } ,
212
+
213
+ /**
214
+ * Alias for keyboardInit, initialize all keyboard related event listeners.
215
+ */
216
+ enable : function ( ) {
217
+ keyboardInit ( ) ;
171
218
}
172
219
} ;
173
220
@@ -181,13 +228,14 @@ keyboardCurrentViewportHeight = getViewportHeight();
181
228
182
229
/**
183
230
* Event handler for first touch event, initializes all event listeners
184
- * for keyboard related events.
231
+ * for keyboard related events. Also aliased by ionic.keyboard.enable.
185
232
*/
186
233
function keyboardInit ( ) {
187
- var debouncedKeyboardFocusIn = ionic . debounce ( keyboardFocusIn , 200 , true ) ;
234
+
235
+ if ( ionic . keyboard . isInitialized ) return ;
188
236
189
237
if ( keyboardHasPlugin ( ) ) {
190
- window . addEventListener ( 'native.keyboardshow' , ionic . debounce ( keyboardNativeShow , 100 , true ) ) ;
238
+ window . addEventListener ( 'native.keyboardshow' , debouncedKeyboardNativeShow ) ;
191
239
window . addEventListener ( 'native.keyboardhide' , keyboardFocusOut ) ;
192
240
} else {
193
241
document . body . addEventListener ( 'focusout' , keyboardFocusOut ) ;
@@ -201,6 +249,8 @@ function keyboardInit() {
201
249
} else {
202
250
document . removeEventListener ( 'touchstart' , keyboardInit ) ;
203
251
}
252
+
253
+ ionic . keyboard . isInitialized = true ;
204
254
}
205
255
206
256
/**
0 commit comments