iOS去除Webview键盘顶部工具栏的方法
前言
在默认情况下,iOS使用Webview打开的网页,在进行表单输入时,弹出的键盘顶部会多出一个工具栏。
左边有两个上下按钮,右边有一个Done/完成按钮。这是用来切换输入框的,就像PC上按Tab键可以切换输入框一样。
为了让App中嵌入的H5更接近Native,咱们可以去掉它。
UIWebView
UIWebView,可以使用[selfhideKeyboardShortcutBar:self.webView]去掉工具栏。
-(void)hideKeyboardShortcutBar:(UIView*)view { for(UIView*subinview.subviews){ [selfhideKeyboardShortcutBar:sub]; if([NSStringFromClass([subclass])isEqualToString:@"UIWebBrowserView"]){ Methodmethod=class_getInstanceMethod(sub.class,@selector(inputAccessoryView)); IMPnewImp=imp_implementationWithBlock(^(id_s){ if([subrespondsToSelector:@selector(inputAssistantItem)]){ UITextInputAssistantItem*inputAssistantItem=[subinputAssistantItem]; inputAssistantItem.leadingBarButtonGroups=@[]; inputAssistantItem.trailingBarButtonGroups=@[]; } returnnil; }); method_setImplementation(method,newImp); } } }
WkWebView
WkWebView,可以使用[selfhideWKWebviewKeyboardShortcutBar:self.webView]去掉工具栏。
//步骤一:创建一个_NoInputAccessoryView @interface_NoInputAccessoryView:NSObject @end @implementation_NoInputAccessoryView -(id)inputAccessoryView{ returnnil; } @end //步骤二:去掉WkWebvieweDone工具栏 -(void)hideWKWebviewKeyboardShortcutBar:(WKWebView*)webView{ UIView*targetView; for(UIView*viewinwebView.scrollView.subviews){ if([[view.classdescription]hasPrefix:@"WKContent"]){ targetView=view; } } if(!targetView){ return; } NSString*noInputAccessoryViewClassName=[NSStringstringWithFormat:@"%@_NoInputAccessoryView",targetView.class.superclass]; ClassnewClass=NSClassFromString(noInputAccessoryViewClassName); if(newClass==nil){ newClass=objc_allocateClassPair(targetView.class,[noInputAccessoryViewClassNamecStringUsingEncoding:NSASCIIStringEncoding],0); if(!newClass){ return; } Methodmethod=class_getInstanceMethod([_NoInputAccessoryViewclass],@selector(inputAccessoryView)); class_addMethod(newClass,@selector(inputAccessoryView),method_getImplementation(method),method_getTypeEncoding(method)); objc_registerClassPair(newClass); } object_setClass(targetView,newClass); }
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。