我可以删除工具栏,但我的宽度是工具栏高度的模糊.
有关如何删除这个的任何想法?
下面的代码是函数.这很直接.
我在使用phonegap的webview中使用它.
-(void) removeBar { // Locate non-UIWindow. UIWindow * keyboardWindow = nil; for (UIWindow * testWindow in [ [UIApplication sharedApplication] windows]) { if (![ [testWindow class] isEqual: [UIWindow class] ]) { keyboardWindow = testWindow; break; } } // Locate UIWebFormView. for (UIView * possibleFormView in [keyboardWindow subviews]) { // iOS 5 sticks the UIWebFormView inside a UIPeripheralHostView. if ([ [possibleFormView description] rangeOfString: @"UIPeripheralHostView"].location != NSNotFound) { // remove the border above the toolbar in iOS 6 [ [possibleFormView layer] setMasksToBounds: YES]; for (UIView * subviewWhichIsPossibleFormView in [possibleFormView subviews]) { if ([ [subviewWhichIsPossibleFormView description] rangeOfString: @"UIWebFormAccessory"].location != NSNotFound) { [subviewWhichIsPossibleFormView removeFromSuperview]; // https://stackoverflow.com/questions/10746998/phonegap-completely-removing-the-black-bar-from-the-iphone-keyboard/10796550#10796550 UIScrollView * webScroll; if ([ [ [UIDevice currentDevice] systemVersion] floatValue] >= 5.0) { webScroll = [ [self webView] scrollView]; } else { webScroll = [ [ [self webView] subviews] lastObject]; } CGRect newFrame = [webScroll frame]; float accessoryHeight = [subviewWhichIsPossibleFormView frame].size.height; newFrame.size.height += accessoryHeight; [subviewWhichIsPossibleFormView removeFromSuperview]; [webScroll setFrame: newFrame]; } } } } }
如果遇到此问题,请务必转到https://bugreport.apple.com并复制rdar:// 9844216
解决方法
- (void)removeKeyboardTopBar { // Locate non-UIWindow. UIWindow *keyboardWindow = nil; for (UIWindow *testWindow in [[UIApplication sharedApplication] windows]) { if (![[testWindow class] isEqual:[UIWindow class]]) { keyboardWindow = testWindow; break; } } // Locate UIWebFormView. for (UIView *possibleFormView in [keyboardWindow subviews]) { if ([[possibleFormView description] hasPrefix:@"<UIPeripheralHostView"]) { for (UIView* peripheralView in possibleFormView.subviews) { // HERE!! hides the backdrop (iOS 7) if ([[peripheralView description] hasPrefix:@"<UIKBInputBackdropView"]) { [[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 = diaryEditorView.scrollView.frame; newFrame.size.height += peripheralView.frame.size.height; diaryEditorView.scrollView.frame = newFrame; // 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]; } } } }
}