我正在开发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" />
附言:我的应用现在正在审核中。目前还不知道苹果是否会批准。
*** 更新2 ***
我的应用已经被苹果批准了。
#import <objc/runtime.h>
导入语句,可以解决你的错误。 - BorisR