Ios 使用WKWebView时,如何隐藏键盘的输入附件视图?
我们的应用程序中有一个webview,可以以半wysiwyg样式编辑一些文本。它只是一个全屏文本区域,所以我们不希望键盘上的“下一步/上一步/完成”按钮占用宝贵的屏幕空间。之前,以下步骤用于删除显示这些按钮的整个栏:Ios 使用WKWebView时,如何隐藏键盘的输入附件视图?,ios,objective-c,swift,wkwebview,Ios,Objective C,Swift,Wkwebview,我们的应用程序中有一个webview,可以以半wysiwyg样式编辑一些文本。它只是一个全屏文本区域,所以我们不希望键盘上的“下一步/上一步/完成”按钮占用宝贵的屏幕空间。之前,以下步骤用于删除显示这些按钮的整个栏: -(void)__removeInputAccessoryView { UIView* subview; for (UIView* view in _editorView.scrollView.subviews) { if([[view.class
-(void)__removeInputAccessoryView {
UIView* subview;
for (UIView* view in _editorView.scrollView.subviews) {
if([[view.class description] hasPrefix:@"UIWeb"])
subview = view;
}
if(subview == nil) {
return;
}
NSString* name = [NSString stringWithFormat:@"%@RWWebviewHelper", subview.class.superclass];
Class newClass = NSClassFromString(name);
if(newClass == nil) {
newClass = objc_allocateClassPair(subview.class, [name cStringUsingEncoding:NSASCIIStringEncoding], 0);
if(!newClass) {
return;
}
Method method = class_getInstanceMethod([RWWebviewHelper class], @selector(inputAccessoryView));
class_addMethod(newClass, @selector(inputAccessoryView), method_getImplementation(method), method_getTypeEncoding(method));
objc_registerClassPair(newClass);
}
object_setClass(subview, newClass);
}
我在SO和Github上发现了类似的代码片段,它们都在Objective-C和Swift中。我目前正在将这个类从Objective-C转换为Swift,并从使用UIWebView转换为使用WKWebView。我在某处发现了这个:
private func removeInputAccessoryView() {
final class FauxBarHelper: NSObject {
var inputAccessoryView: AnyObject? { return nil }
}
editorView.scrollView.subviews.forEach { view in
if String(describing: type(of: view)).hasPrefix("WKcon") {
let noInputAccessoryViewClassName = "\(view.superclass!)_NoInputAccessoryView"
var newClass: AnyClass? = NSClassFromString(noInputAccessoryViewClassName)
if newClass == nil {
let targetClass: AnyClass = object_getClass(view)
newClass = objc_allocateClassPair(targetClass, noInputAccessoryViewClassName.cString(using: String.Encoding.ascii)!, 0)
}
let originalMethod = class_getInstanceMethod(FauxBarHelper.self, #selector(getter: FauxBarHelper.inputAccessoryView))
class_addMethod(newClass!.self, #selector(getter: FauxBarHelper.inputAccessoryView), method_getImplementation(originalMethod), method_getTypeEncoding(originalMethod))
object_setClass(view, newClass)
}
}
}
但它并没有隐藏酒吧。我对破解私有API不太在行,在处理了该代码段中的值之后,我找不到隐藏该条的方法。我知道这是一个商店拒绝风险,但你知道客户是怎样的。我需要让它工作起来。我可以使用Objective-C代码段,但更喜欢Swift
有人有主意吗?我觉得在屏幕键盘上隐藏一个按钮栏应该不难,我是不是错过了一些简单的东西