我正在为iOS开发PhoneGap应用程序,我需要摆脱新的iOS 9快捷栏。现在我在- (void)viewDidLoad
方法
if ([self.webView respondsToSelector:@selector(inputAssistantItem)]) {
UITextInputAssistantItem *inputAssistantItem = [self.webView inputAssistantItem];
inputAssistantItem.leadingBarButtonGroups = @[];
inputAssistantItem.trailingBarButtonGroups = @[];
}
这隐藏了撤消/重做和复制/粘贴按钮,但快捷栏仍然显示在键盘上并且上面有导航按钮。
如何完全摆脱快捷栏。
感谢您的帮助!
*** 更新1 ***
我的完整工作代码如下。希望这可以帮助某人(感谢@Clement回复)
#import <objc/runtime.h>
- (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);
}
}
}
- (void)viewDidLoad
{
[super viewDidLoad];
[self hideKeyboardShortcutBar:self.webView];
}
此技巧将隐藏撤消/重做和导航按钮。但自动预测文本仍将显示在键盘上。要隐藏快捷方式栏,请将html属性添加到输入元素
<input autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" />
P.S我的应用程序正在审核中。仍然不知道Apple是否会批准这一点。
*** 更新2 ***
我的应用程序已获Apple批准
答案 0 :(得分:6)
使用方法swiziling我们可以删除键盘快捷键(仅适用于ObjC)。
- (void)hideKeyboardShortcutBar
{
Class webBrowserClass = NSClassFromString(@"UIWebBrowserView");
Method method = class_getInstanceMethod(webBrowserClass, @selector(inputAccessoryView));
IMP newImp = imp_implementationWithBlock(^(id _s) {
if ([self.webView respondsToSelector:@selector(inputAssistantItem)]) {
UITextInputAssistantItem *inputAssistantItem = [self.webView inputAssistantItem];
inputAssistantItem.leadingBarButtonGroups = @[];
inputAssistantItem.trailingBarButtonGroups = @[];
}
return nil;
});
method_setImplementation(method, newImp);
}
<强> inputAccessoryView 强> :此属性通常用于将附件视图附加到 系统提供的键盘,为UITextField和 UITextView对象。
因此,每次键盘弹出时都会触发新的实现块。
<强>更新强>
要从WKWebView
移除配件视图,请使用WKContentView
代替UIWebBrowserView