2009-07-06 4 views
4

Ich habe eine UIWebView-basierte iPhone-Anwendung, die HTML aus einer SQLite-Datenbank einliest. Der Benutzer kann neue Informationen speichern, die über eine UITextView eingegeben wurden, die die Wagenrückgabe akzeptiert. Wie zeige ich diese Zeilenumbrüche (Zeilenumbrüche) im UIWebView korrekt an? Ich habe versucht, so etwas wie dies mit:Wie kann ich Zeilenumbrüche in einem UIWebView für das iPhone richtig speichern/anzeigen?

NSString *HTMLData = [mySQLiteDataObject text]; 
HTMLData = [HTMLData stringByReplacingOccurrencesOfString:@"\\n" 
    withString:@"<br>"]; 
[webView loadHTMLString:HTMLData baseURL:nil]; 

Aber es sieht nicht wie der Text mit Zeilenumbrüchen erkannt wird: Der Text wird in einer durchgehenden Linie in der WebView angezeigt. Wenn ich den Text in der Konsole ausdrücke, kommt er mit intakten Zeilenumbrüchen durch.

Ich habe versucht, \ n, \ r und \ r \ n im obigen Beispielcode, ohne Erfolg. Speichere ich den Text des Benutzers falsch oder mache ich das Falsche auf der Bildschirmseite?

Antwort

2

Ich kann zwei Backslashes in Ihrer Suchzeichenfolge sehen: Sie müssen "\n", nicht "\\n" ersetzen, damit es funktioniert.

Aber Sie really want to sanitize your input vor dem Laden in die UIWebView. Zumindest müssen Sie Maske <,>, & und ".

+0

Yep, der zusätzliche Backslash war der Täter. Ich hätte schwören können, sah ich die doppelten Backslashes woanders empfohlen. Für mehr Hintergrund auf Desinfektion, werfen Sie einen Blick auf Diese allgemeine konzeptionelle Erklärung: http://experimentgarden.blogspot.com/2009/07/how-to-stop-hacker-dont-trust-user.html Ich beendete das Schreiben einer grundlegenden sanitizeForDisplay-Methode, die NSString erweitert. – bruce1337

0

Wenn ich nicht irre, wenn Sie "\\n" mit einem HTML-Tag Pause ersetzen sollte es so aussehen:

HTMLData = [HTMLData stringByReplacingOccurrencesOfString:@"\\n" 
    withString:@"<br />"]; 

Es scheint, dass Sie den Schrägstrich in der break-Anweisung fehlten.

Verwandte Themen