2015-09-23 9 views
7

私はiOSのPhoneGapアプリケーションを開発しており、新しいiOS 9ショートカットバーを削除する必要があります。今、私は- (void)viewDidLoad方法iOS 9のUIWebViewのショートカットキーバーを非表示

if ([self.webView respondsToSelector:@selector(inputAssistantItem)]) { 
    UITextInputAssistantItem *inputAssistantItem = [self.webView inputAssistantItem]; 
    inputAssistantItem.leadingBarButtonGroups = @[]; 
    inputAssistantItem.trailingBarButtonGroups = @[]; 
} 

に次のようにやっているこれは、アンドゥ/リドゥやコピー/ペーストボタン非表示になりますが、ショートカットバーはまだキーボードの上に提示し、その上にナビゲーションボタンがあります。私は完全にショートカットバーを取り除くことができますどのように

enter image description here

ありがとうございました!


***UPDATE 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私のアプリは現在レビュー中です。アップルがこれを承認するかどうかまだ分からない。


***UPDATE 2***

私のアプリは、私たちは、キーボードショートカットバー(のみにObjCで動作)を削除することができる方法のswizilingを使用して、アップル

+0

あなたがすることはできませんから、アクセサリビューを削除するには

UPDATE

は、ウェブビューの一部です。 Phonegap/CordovaはHTMLを使用してあなたのUIを構築しています。その後、Webビューで表示されます。 – rckoenes

+0

あなたの返信ありがとう、rckoenes。しかし、なぜ私はまだアンドゥ/コピー/ペーストボタンを隠すことができますか? – rubanbs

+0

フォーム内に入力フィールドを入れないでください。 – jcesarmobile

答えて

6

によって承認されました。

- (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

+0

これは機能します!ありがとう。アップルがこれを承認するかどうか考えていますか? – rubanbs

+0

はい、アップルの承認を受けています。 –

+0

誰かがこれで拒否されたのか不思議です。 Telerikのキーボードプラグインはこの機能を削除しました。「アプリがレビューされた時点でAppleが現在拒否している、いわゆる「プライベートAPI」を使用していたからです。 http://plugins.telerik.com/cordova/plugin/keyboard – mpoisot

関連する問題