iOS 7 UIWebView Tastatur Problem
Ich haben entfernen Sie diese bar hier link aber für iOS 7 dieser code funktioniert nicht.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich haben entfernen Sie diese bar hier link aber für iOS 7 dieser code funktioniert nicht.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Entfernen wir diese bar mit einigen Objective-C-Laufzeit-Trickserei.
Wir haben eine Klasse, die eine Methode:
Einmal haben wir eine web-Ansicht, die wir wollen, entfernen Sie die bar aus, die wir Durchlaufen der scroll-Ansicht Unteransichten und nehmen Sie die
UIWebDocumentView
Klasse. Wir haben dann dynamisch machen die Oberklasse der Klasse, die wir oben erstellt werden, die Untersicht s-Klasse (UIWebDocumentView - aber wir können nicht sagen, dass im Voraus, denn dies ist die private API), und ersetzen Sie die Untersicht der Klasse in unserer Klasse.Entspricht der oben in Swift 3.0:
subview
definiert? ich verwendetNSObject *subview = [[webView scrollView] subviews][0];
(was ist eigentlich einUIWebBrowserView
Objekt, und die einzige Untersicht in scrollView die Untersichten) und objc zusammen mit:[UIWebDocumentView_SwizzleHelper autoFillDelegate]: unrecognized selector sent to instance 0xa8cba00
.UIWebDocumentView_SwizzleHelper
Klasse keine Unterklasse vonUIWebBrowserView
. Hast du das korrekte Superklasseobjc_allocateClassPair
?subview
, Tat ich etwas, was ein wenig besser ist, als sich gerade an die Gurgel - ich sah für eine Untersicht unter die scroll-view, dessen Klasse name beginnt mitUIWeb
.newClass = objc_allocateClassPair(subview.class, [name cStringUsingEncoding:NSASCIIStringEncoding], 0);
. speziellsubview.class
stattsubview.class.subclass
. so ist die Methode, definition und erste Zeile, die ich benutzt habe ist:- (void) removeInputAccessoryViewFromUIWebView:(UIWebView*)webView { NSObject *subview = [[webView scrollView] subviews][0];
Dank!UIWebView
Unterklasse. Auch müssen Sie#import "objc/runtime.h"
am Anfang der Datei[self __removeAccessoryView]
aus dem inneren der- (id)initWithCoder:(NSCoder *)aDecoder
Methode (was auch geklappt hat, da meine UIWebView Unterklasse instanziiert wird, aus einem storyboard)._SwizzleHelper
?Method method = class_getInstanceMethod
beziehen sich auf_SwizzleHelper
? Auch für michsubview
ist immer null. Die Untersichten der scrollView sindWKContentView
,UIView
. Haben Sie eine Idee, warum?_removeInput..
definiert ist, brauchen Sie nicht zu importieren_SwizzleHelper.h
? Auch meine zweite Frage warview.class description
nie hat UIWeb. Die einzige verfügbare Beschreibungen sindWKContentView
undUIView
.Habe ich eine cocoapod basierend auf dieser blog-post von @bjhomer.
Können Sie ersetzen die inputaccessoryview und nicht nur verstecken. Ich hoffe, dies wird dazu beitragen, Menschen mit dem gleichen Problem.
https://github.com/lauracpierre/FA_InputAccessoryViewWebView
Finden Sie die cocoapod Seite gleich hier.
Habe ich kam in dieses tolle Lösung, aber ich brauchte, um die inputAccessoryView zurück als gut. Ich fügte hinzu, diese Methode:
Scheint es zu funktionieren mit keine Nebenwirkungen, aber ich kann nicht loswerden, das Gefühl, dass meine Hose in Brand.
Wenn Sie möchten, Leo Natan, der die Lösung für die Arbeit mit WKWebView statt UIWebView nur ändern Präfix von "UIWeb" zu "WKContent".
Erstellte ich eine Zusammenfassung dazu:
https://gist.github.com/kgaidis/5f9a8c7063b687cc3946fad6379c1a66
Es ist ein
UIWebView
Kategorie, wo alles, was Sie tun, ist zu ändern Sie diecustomInputAccessoryView
Eigenschaft:Können Sie entweder
nil
um es zu entfernen, oder Sie können eine neue Ansicht, um Sie zu ändern.Halten Sie im Verstand, diese nutzt auch der private API ' s, so verwenden Sie auf eigene Gefahr, aber es scheint wie eine Menge von apps, die ähnliche Dinge tun dennoch.