summaryrefslogtreecommitdiff
path: root/plugins/com.ionic.keyboard/src/ios/IonicKeyboard.m
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/com.ionic.keyboard/src/ios/IonicKeyboard.m')
-rw-r--r--plugins/com.ionic.keyboard/src/ios/IonicKeyboard.m160
1 files changed, 160 insertions, 0 deletions
diff --git a/plugins/com.ionic.keyboard/src/ios/IonicKeyboard.m b/plugins/com.ionic.keyboard/src/ios/IonicKeyboard.m
new file mode 100644
index 00000000..045cc65f
--- /dev/null
+++ b/plugins/com.ionic.keyboard/src/ios/IonicKeyboard.m
@@ -0,0 +1,160 @@
+#import "IonicKeyboard.h"
+#import "UIWebViewExtension.h"
+#import <Cordova/CDVAvailability.h>
+
+@implementation IonicKeyboard
+
+@synthesize hideKeyboardAccessoryBar = _hideKeyboardAccessoryBar;
+@synthesize disableScroll = _disableScroll;
+//@synthesize styleDark = _styleDark;
+
+- (void)pluginInitialize {
+
+ NSNotificationCenter* nc = [NSNotificationCenter defaultCenter];
+ __weak IonicKeyboard* weakSelf = self;
+
+ //set defaults
+ self.hideKeyboardAccessoryBar = NO;
+ self.disableScroll = NO;
+ //self.styleDark = NO;
+
+ _keyboardShowObserver = [nc addObserverForName:UIKeyboardWillShowNotification
+ object:nil
+ queue:[NSOperationQueue mainQueue]
+ usingBlock:^(NSNotification* notification) {
+
+ CGRect keyboardFrame = [notification.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];
+ keyboardFrame = [self.viewController.view convertRect:keyboardFrame fromView:nil];
+
+ [weakSelf.commandDelegate evalJs:[NSString stringWithFormat:@"cordova.plugins.Keyboard.isVisible = true; cordova.fireWindowEvent('native.keyboardshow', { 'keyboardHeight': %@ }); ", [@(keyboardFrame.size.height) stringValue]]];
+
+ //deprecated
+ [weakSelf.commandDelegate evalJs:[NSString stringWithFormat:@"cordova.fireWindowEvent('native.showkeyboard', { 'keyboardHeight': %@ }); ", [@(keyboardFrame.size.height) stringValue]]];
+ }];
+
+ _keyboardHideObserver = [nc addObserverForName:UIKeyboardWillHideNotification
+ object:nil
+ queue:[NSOperationQueue mainQueue]
+ usingBlock:^(NSNotification* notification) {
+ [weakSelf.commandDelegate evalJs:@"cordova.plugins.Keyboard.isVisible = false; cordova.fireWindowEvent('native.keyboardhide'); "];
+
+ //deprecated
+ [weakSelf.commandDelegate evalJs:@"cordova.fireWindowEvent('native.hidekeyboard'); "];
+ }];
+}
+- (BOOL)disableScroll {
+ return _disableScroll;
+}
+
+- (void)setDisableScroll:(BOOL)disableScroll {
+ if (disableScroll == _disableScroll) {
+ return;
+ }
+ if (disableScroll) {
+ self.webView.scrollView.scrollEnabled = NO;
+ self.webView.scrollView.delegate = self;
+ }
+ else {
+ self.webView.scrollView.scrollEnabled = YES;
+ self.webView.scrollView.delegate = nil;
+ }
+
+ _disableScroll = disableScroll;
+}
+
+
+- (BOOL)hideKeyboardAccessoryBar {
+ return _hideKeyboardAccessoryBar;
+}
+
+- (void)setHideKeyboardAccessoryBar:(BOOL)hideKeyboardAccessoryBar {
+ if (hideKeyboardAccessoryBar == _hideKeyboardAccessoryBar) {
+ return;
+ }
+ if (hideKeyboardAccessoryBar) {
+ self.webView.hackishlyHidesInputAccessoryView = YES;
+ }
+ else {
+ self.webView.hackishlyHidesInputAccessoryView = NO;
+ }
+
+ _hideKeyboardAccessoryBar = hideKeyboardAccessoryBar;
+}
+
+/*
+- (BOOL)styleDark {
+ return _styleDark;
+}
+
+- (void)setStyleDark:(BOOL)styleDark {
+ if (styleDark == _styleDark) {
+ return;
+ }
+ if (styleDark) {
+ self.webView.styleDark = YES;
+ }
+ else {
+ self.webView.styleDark = NO;
+ }
+
+ _styleDark = styleDark;
+}
+*/
+
+
+/* ------------------------------------------------------------- */
+
+- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
+ [scrollView setContentOffset: CGPointZero];
+}
+
+/* ------------------------------------------------------------- */
+
+- (void)dealloc {
+ NSNotificationCenter* nc = [NSNotificationCenter defaultCenter];
+
+ [nc removeObserver:self name:UIKeyboardWillShowNotification object:nil];
+ [nc removeObserver:self name:UIKeyboardWillHideNotification object:nil];
+}
+
+/* ------------------------------------------------------------- */
+
+- (void) disableScroll:(CDVInvokedUrlCommand*)command {
+ if (!command.arguments || ![command.arguments count]){
+ return;
+ }
+ id value = [command.arguments objectAtIndex:0];
+
+ self.disableScroll = [value boolValue];
+}
+
+- (void) hideKeyboardAccessoryBar:(CDVInvokedUrlCommand*)command {
+ if (!command.arguments || ![command.arguments count]){
+ return;
+ }
+ id value = [command.arguments objectAtIndex:0];
+
+ self.hideKeyboardAccessoryBar = [value boolValue];
+}
+
+- (void) close:(CDVInvokedUrlCommand*)command {
+ [self.webView endEditing:YES];
+}
+
+- (void) show:(CDVInvokedUrlCommand*)command {
+ NSLog(@"Showing keyboard not supported in iOS due to platform limitations.");
+}
+
+/*
+- (void) styleDark:(CDVInvokedUrlCommand*)command {
+ if (!command.arguments || ![command.arguments count]){
+ return;
+ }
+ id value = [command.arguments objectAtIndex:0];
+
+ self.styleDark = [value boolValue];
+}
+*/
+
+@end
+