iOS去除Webview鍵盤(pán)頂部工具欄的方法
前言
在默認(rèn)情況下,iOS 使用 Webview 打開(kāi)的網(wǎng)頁(yè),在進(jìn)行表單輸入時(shí),彈出的鍵盤(pán)頂部會(huì)多出一個(gè)工具欄。
左邊有兩個(gè)上下按鈕,右邊有一個(gè)Done/完成按鈕。這是用來(lái)切換輸入框的,就像 PC 上按Tab鍵可以切換輸入框一樣。
為了讓 App 中嵌入的 H5 更接近 Native,咱們可以去掉它。
UIWebView
UIWebView,可以使用[self hideKeyboardShortcutBar:self.webView]去掉工具欄。
- (void) hideKeyboardShortcutBar: (UIView *)view
{
for (UIView *sub in view.subviews) {
[self hideKeyboardShortcutBar:sub];
if ([NSStringFromClass([sub class]) isEqualToString:@"UIWebBrowserView"]) {
Method method = class_getInstanceMethod(sub.class, @selector(inputAccessoryView));
IMP newImp = imp_implementationWithBlock(^(id _s) {
if ([sub respondsToSelector:@selector(inputAssistantItem)]) {
UITextInputAssistantItem *inputAssistantItem = [sub inputAssistantItem];
inputAssistantItem.leadingBarButtonGroups = @[];
inputAssistantItem.trailingBarButtonGroups = @[];
}
return nil;
});
method_setImplementation(method, newImp);
}
}
}
WkWebView
WkWebView,可以使用[self hideWKWebviewKeyboardShortcutBar:self.webView]去掉工具欄。
// 步驟一:創(chuàng)建一個(gè) _NoInputAccessoryView
@interface _NoInputAccessoryView : NSObject
@end
@implementation _NoInputAccessoryView
- (id)inputAccessoryView {
return nil;
}
@end
// 步驟二:去掉 WkWebviewe Done 工具欄
- (void) hideWKWebviewKeyboardShortcutBar:(WKWebView *)webView {
UIView *targetView;
for (UIView *view in webView.scrollView.subviews) {
if([[view.class description] hasPrefix:@"WKContent"]) {
targetView = view;
}
}
if (!targetView) {
return;
}
NSString *noInputAccessoryViewClassName = [NSString stringWithFormat:@"%@_NoInputAccessoryView", targetView.class.superclass];
Class newClass = NSClassFromString(noInputAccessoryViewClassName);
if(newClass == nil) {
newClass = objc_allocateClassPair(targetView.class, [noInputAccessoryViewClassName cStringUsingEncoding:NSASCIIStringEncoding], 0);
if(!newClass) {
return;
}
Method method = class_getInstanceMethod([_NoInputAccessoryView class], @selector(inputAccessoryView));
class_addMethod(newClass, @selector(inputAccessoryView), method_getImplementation(method), method_getTypeEncoding(method));
objc_registerClassPair(newClass);
}
object_setClass(targetView, newClass);
}
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
- iOS開(kāi)發(fā)中WebView的基本使用方法簡(jiǎn)介
- IOS中UIWebView加載Loading的實(shí)現(xiàn)方法
- IOS中的webView加載HTML
- 輕松理解iOS 11中webview的視口
- 詳解iOS webview加載時(shí)序和緩存問(wèn)題總結(jié)
- iOS Webview自適應(yīng)實(shí)際內(nèi)容高度的4種方法詳解
- ios開(kāi)發(fā)加載webview顯示進(jìn)度條實(shí)例
- iOS 對(duì)當(dāng)前webView進(jìn)行截屏的方法
- iOS獲取cell中webview的內(nèi)容尺寸
相關(guān)文章
iOS逆向工程使用LLDB的USB連接調(diào)試第三方App
這篇文章主要介紹了iOS逆向工程使用LLDB的USB連接調(diào)試第三方App,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09
舉例講解設(shè)計(jì)模式中的原型模式在iOS應(yīng)用開(kāi)發(fā)中的作用
這篇文章主要介紹了設(shè)計(jì)模式中的原型模式在iOS應(yīng)用開(kāi)發(fā)中的作用,示例代碼為傳統(tǒng)的Objective-C,需要的朋友可以參考下2016-04-04
怎么防止ios系統(tǒng)被抓包?防止ios系統(tǒng)被抓包的方法
怎么防止ios系統(tǒng)被抓包?下面小編就為大家分享一篇防止ios系統(tǒng)被抓包的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-12-12
iOS使用WebView生成長(zhǎng)截圖的第3種解決方案
這篇文章主要給大家介紹了關(guān)于iOS使用WebView生成長(zhǎng)截圖的第3種解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-09-09
Flutter?GetPageRoute實(shí)現(xiàn)嵌套導(dǎo)航學(xué)習(xí)
這篇文章主要為大家介紹了Flutter?GetPageRoute實(shí)現(xiàn)嵌套導(dǎo)航的示例學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
iOS中自動(dòng)實(shí)現(xiàn)對(duì)象序列化的方法詳解
這篇文章主要給大家介紹了在iOS中自動(dòng)實(shí)現(xiàn)對(duì)象序列化的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。2017-05-05
iOS開(kāi)發(fā)中常見(jiàn)的解析XML的類(lèi)庫(kù)以及簡(jiǎn)要安裝方法
這篇文章主要介紹了iOS開(kāi)發(fā)中常見(jiàn)的解析XML的類(lèi)庫(kù)以及簡(jiǎn)要安裝方法,簡(jiǎn)要地說(shuō)明了在Xcode下的一些特點(diǎn)以供對(duì)比,需要的朋友可以參考下2015-10-10
iOS保存App中的照片到系統(tǒng)相冊(cè)或自建相冊(cè)的方法
這篇文章主要介紹了iOS保存App中的照片到系統(tǒng)相冊(cè)或自建相冊(cè)的方法,示例代碼為傳統(tǒng)的Objective-C語(yǔ)言寫(xiě)成,需要的朋友可以參考下2016-04-04

