iOS去除Webview键盘顶部工具栏的方法

2025-05-29 0 77

前言

在默认情况下,ios 使用 webview 打开的网页,在进行表单输入时,弹出的键盘顶部会多出一个工具栏。

左边有两个上下按钮,右边有一个done/完成按钮。这是用来切换输入框的,就像 pc 上按tab键可以切换输入框一样。

为了让 app 中嵌入的 h5 更接近 native,咱们可以去掉它。

uiwebview

uiwebview,可以使用[self hidekeyboardshortcutbar:self.webview]去掉工具栏。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20
- (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]去掉工具栏。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39
// 步骤一:创建一个 _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);

}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对快网idc的支持。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 iOS去除Webview键盘顶部工具栏的方法 https://www.kuaiidc.com/89175.html

相关文章

发表评论
暂无评论