ios WKWebview弹出键盘上的按钮隐藏

本文介绍了一种在iOS应用中使用WKWebView时,通过Objective-C代码自定义隐藏键盘附件视图的方法。该方法涉及创建WKContentView的子类,并重写inputAccessoryView方法以实现附件视图的隐藏。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#import <WebKit/WebKit.h>


@interface WKWebView (AccessoryHiding)


@property (nonatomic, assign) BOOL hackishlyHidesInputAccessoryView;


@end



#import "WKWebView+AccessoryHiding.h"


#import  <objc/runtime.h>


#import <UIKit/UIKit.h>


@implementation WKWebView (HackishAccessoryHiding)


static const char * const hackishFixClassName = "WKContentViewMinusAccessoryView";


//static const char * const hackishFixClassName = "UIWebBrowserViewMinusAccessoryView";

//UIWebBrowser


static Class hackishFixClass = Nil;


- (UIView *)hackishlyFoundBrowserView {


UIScrollView *scrollView = self.scrollView;


UIView *browserView = nil;


for (UIView *subview in scrollView.subviews) {


NSLog(@"%@",NSStringFromClass([subview class]));


if ([NSStringFromClass([subview class]) hasPrefix:@"WKContentView"]) {


browserView = subview;


break;


}


}


return browserView;


}


- (id)methodReturningNil {


return nil;


}


- (void)ensureHackishSubclassExistsOfBrowserViewClass:(Class)browserViewClass {


if (!hackishFixClass) {


Class newClass = objc_allocateClassPair(browserViewClass, hackishFixClassName, 0);


IMP nilImp = [self methodForSelector:@selector(methodReturningNil)];


class_addMethod(newClass, @selector(inputAccessoryView), nilImp, "@@:");


objc_registerClassPair(newClass);


hackishFixClass = newClass;


}


}


- (BOOL) hackishlyHidesInputAccessoryView {


UIView *browserView = [self hackishlyFoundBrowserView];


return [browserView class] == hackishFixClass;


}


- (void) setHackishlyHidesInputAccessoryView:(BOOL)value {


UIView *browserView = [self hackishlyFoundBrowserView];


if (browserView == nil) {


return;


}


[self ensureHackishSubclassExistsOfBrowserViewClass:[browserView class]];


if (value) {


object_setClass(browserView, hackishFixClass);


}


else {


Class normalClass = objc_getClass("WKContentView");


object_setClass(browserView, normalClass);


}


[browserView reloadInputViews];


}


@end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值