You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by sh...@apache.org on 2014/11/21 22:46:58 UTC
cordova-plugins git commit: Updated Plugin to iOS 8 (closes #16)
Repository: cordova-plugins
Updated Branches:
refs/heads/master 585a8c8fa -> 2c1c0a513
Updated Plugin to iOS 8 (closes #16)
Apple changed the way Keyboard Views are created and plugins was
crashing the App;
Signed-off-by: Shazron Abdullah <sh...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/cordova-plugins/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugins/commit/2c1c0a51
Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugins/tree/2c1c0a51
Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugins/diff/2c1c0a51
Branch: refs/heads/master
Commit: 2c1c0a5135bf7385688b08c47ef0c9a4529fd5e9
Parents: 585a8c8
Author: fmgasparino <fm...@gmail.com>
Authored: Wed Nov 5 12:31:16 2014 -0800
Committer: Shazron Abdullah <sh...@apache.org>
Committed: Fri Nov 21 13:46:25 2014 -0800
----------------------------------------------------------------------
keyboard/src/ios/CDVKeyboard.m | 99 ++++++++++++++++++++++++-------------
1 file changed, 66 insertions(+), 33 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-plugins/blob/2c1c0a51/keyboard/src/ios/CDVKeyboard.m
----------------------------------------------------------------------
diff --git a/keyboard/src/ios/CDVKeyboard.m b/keyboard/src/ios/CDVKeyboard.m
index 17bb3e5..cdde80e 100644
--- a/keyboard/src/ios/CDVKeyboard.m
+++ b/keyboard/src/ios/CDVKeyboard.m
@@ -203,46 +203,79 @@
// //////////////////////////////////////////////////
+- (NSArray*)getKeyboardViews:(UIView*)viewToSearch{
+ NSArray *subViews;
+
+ for (UIView *possibleFormView in viewToSearch.subviews) {
+ if ([[possibleFormView description] hasPrefix: self.getKeyboardFirstLevelIdentifier]) {
+ if(IsAtLeastiOSVersion(@"8.0")){
+ for (UIView* subView in possibleFormView.subviews) {
+ return subView.subviews;
+ }
+ }else{
+ return possibleFormView.subviews;
+ }
+ }
+
+ }
+ return subViews;
+}
+
+- (NSString*)getKeyboardFirstLevelIdentifier{
+ if(!IsAtLeastiOSVersion(@"8.0")){
+ return @"<UIPeripheralHostView";
+ }else{
+ return @"<UIInputSetContainerView";
+ }
+}
+
+
- (void)formAccessoryBarKeyboardWillShow:(NSNotification*)notif
{
if (!_hideFormAccessoryBar) {
return;
}
- NSArray* windows = [[UIApplication sharedApplication] windows];
-
- for (UIWindow* window in windows) {
- for (UIView* view in window.subviews) {
- if ([[view description] hasPrefix:@"<UIPeripheralHostView"]) {
- for (UIView* peripheralView in view.subviews) {
- // hides the backdrop (iOS 7)
- if ([[peripheralView description] hasPrefix:@"<UIKBInputBackdropView"]) {
- // check that this backdrop is for the accessory bar (at the top),
- // sparing the backdrop behind the main keyboard
- CGRect rect = peripheralView.frame;
- if (rect.origin.y == 0) {
- [[peripheralView layer] setOpacity:0.0];
- }
- }
-
- // hides the accessory bar
- if ([[peripheralView description] hasPrefix:@"<UIWebFormAccessory"]) {
- // remove the extra scroll space for the form accessory bar
- CGRect newFrame = self.webView.scrollView.frame;
- newFrame.size.height += peripheralView.frame.size.height;
- self.webView.scrollView.frame = newFrame;
-
- _accessoryBarHeight = peripheralView.frame.size.height;
-
- // remove the form accessory bar
- [peripheralView removeFromSuperview];
- }
- // hides the thin grey line used to adorn the bar (iOS 6)
- if ([[peripheralView description] hasPrefix:@"<UIImageView"]) {
- [[peripheralView layer] setOpacity:0.0];
- }
- }
+ UIWindow *keyboardWindow = nil;
+ for (UIWindow *windows in [[UIApplication sharedApplication] windows]) {
+ if (![[windows class] isEqual:[UIWindow class]]) {
+ keyboardWindow = windows;
+ break;
+ }
+ }
+
+ for (UIView* peripheralView in [self getKeyboardViews:keyboardWindow]) {
+
+ // hides the backdrop (iOS 7)
+ if ([[peripheralView description] hasPrefix:@"<UIKBInputBackdropView"]) {
+ // check that this backdrop is for the accessory bar (at the top),
+ // sparing the backdrop behind the main keyboard
+ CGRect rect = peripheralView.frame;
+ if (rect.origin.y == 0) {
+ [[peripheralView layer] setOpacity:0.0];
+ }
+ }
+
+ // hides the accessory bar
+ if ([[peripheralView description] hasPrefix:@"<UIWebFormAccessory"]) {
+ //remove the extra scroll space for the form accessory bar
+ CGRect newFrame = self.webView.scrollView.frame;
+ newFrame.size.height += peripheralView.frame.size.height;
+ self.webView.scrollView.frame = newFrame;
+
+ _accessoryBarHeight = peripheralView.frame.size.height;
+
+ // remove the form accessory bar
+ if(IsAtLeastiOSVersion(@"8.0")){
+ [[peripheralView layer] setOpacity:0.0];
+ }else{
+ [peripheralView removeFromSuperview];
}
+
+ }
+ // hides the thin grey line used to adorn the bar (iOS 6)
+ if ([[peripheralView description] hasPrefix:@"<UIImageView"]) {
+ [[peripheralView layer] setOpacity:0.0];
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org