2016-06-13 5 views
0

Wir haben die Anmeldeseite in Webview geladen, jetzt, sobald der Benutzer auf "Login" -Taste in Webview klickt, möchte ich die Farbe dieser Schaltfläche mit iOS Ziel - c-Code ändern. Ist das möglich?Farbe der Schaltfläche in UIWebView ändern ios objective -c

Danke!

+0

ist die Schaltfläche in IB erstellt? – Harris

+0

Nein, es ist ein Webseitenelement –

+0

Wenn die Schaltfläche nicht von Ihnen erstellt wurde und aus einer anderen Quelle geladen wird, wie könnten Sie die Farbe ändern? – Harris

Antwort

0

Dies ist möglich, indem Sie die Delegate-Methode von UIWebView verwenden. Dann können Sie JavaScript-Code in ObjC oder Swift ausführen.

Ich zeige Ihnen den Detailcode nach ein paar Minuten, weil ich auf dem Heimweg bin.


Hallo, ich bin zurück.

Der Hauptgedanke ist, dass die Eigenschaft onclick der Schaltfläche erneut zugewiesen wird. Rufen Sie die alte `onclick'-Funktion auf, wenn Sie die neue Funktion implementieren.

Zuerst sollten Sie die onclick Funktion der Taste kennen. Durch Lesen des Quellcodes der Webseite können Sie den Namen der Funktion kennenlernen.

Sie müssen auch die ID der Schaltfläche kennen.

Zum Beispiel ist der clickButton() der Funktionsname. Die btn ist die ID der Schaltfläche.

<input type="button" id="btn" value="Test Button" onclick="clickButton()"> 

Und dann sollten Sie Ihren Xcode starten und ein UIWebView schreiben, um die Webseite zu laden. Sie sollten die delegate-Eigenschaft implementieren und die -webViewDidFinishLoad:-Methode überschreiben.

- (void)webViewDidFinishLoad:(UIWebView *)webView { 
    [webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('btn').onclick = function() { document.getElementById('btn').style.backgroundColor = 'red'; clickButton(); }"]; 
} 

Sie sollten die 'red' und 'btn' mit dem richtigen Code ersetzen.

0

las ich das irgendwo ... Es funktioniert für mich ..

hit this link: http://jsfiddle.net/timdown/Bvd9d/ und Platz JS-Code in Ihren JS File.Import es in HTML-Datei.

diesen Code Versuchen:

function highlight(colour) { 
var range, sel; 
if (window.getSelection) { 

    try { 
     if (!document.execCommand("BackColor", false, colour)) { 
      makeEditableAndHighlight(colour); 
     } 
    } catch (ex) { 
     makeEditableAndHighlight(colour) 
    } 
} else if (document.selection && document.selection.createRange) { 
    // IE <= 8 case 
    range = document.selection.createRange(); 
    range.execCommand("BackColor", false, colour); 
}} 

Für Objective C:

Rufen Sie diese Methode:

[webView stringByEvaluatingJavaScriptFromString:@"highlight('#ff0')"];