Ich möchte eine Art von Aktualisierung eines UITextView durchführen, um die Textansicht in den ursprünglichen Zustand zurückzusetzen. Ich habe einen Absatz, der abhängig davon, auf welches TableViewCell der Benutzer klickt, dynamisch ausgefüllt wird. Wenn Sie also im Textfeld blättern, gehen Sie zurück und wählen Sie eine andere Zelle aus und kehren Sie zurück, der Text ändert sich, aber die Bildlaufposition bleibt so, wie der Benutzer sie verlassen hat. Wie kann ich den Standardzustand wiederherstellen? Vielen Dank!Aktualisieren der Bildlaufposition von UITextView auf dem iPhone
Antwort
Im Standardzustand, meinen Sie nach oben scrollen? Wenn ja, sind Sie auf dem richtigen Weg. Versuchen
[myTextView scrollRangeToVisible:NSMakeRange(0, 0)];
Ich habe das auch versucht, aber es schien nicht an den eigentlichen Anfang des Textes zu gehen. Es kommt nur nah an die Spitze, sieht aber nicht wie der Standard aus. Ehrlich gesagt verstehe ich das NSRange-Zeug nicht wirklich. –
Ich habe das gerade mit einer App versucht, die ich habe, und es funktioniert für mich. Können Sie einen Screenshot Ihres Simulators posten, damit wir das Verhalten sehen können? –
Hier sind einige Screencaps: INITIAL, MANUELL ROLLEN, & RELOADED http://www.angelfilm.net/external/stackoverflow/mos/ –
Ich habe festgestellt, dass, wenn ich die UITextView löschen und dann den neuen Text anwenden, wird es automatisch „scrollen“ zurück nach oben.
myTextView.text = @"";
myTextView.text = theRealTextContent;
Keines dieser Ansätze funktionierte für mich zufriedenstellend.
scrollRangeToVisible produziert Tonnen visuelle Artefakte (viel Scrollen, wenn zwischen den großen Strings schaltend), und in der Tat funktioniert nur überhaupt in einem verzögerten Aufruf einige Zeit (ich verwendete 0,1 Sekunden), nachdem der Inhalt wurde geändert, nicht direkt, wie Shaggy Frogs Antwort impliziert.
das Einstellen des Textes auf @ "" vor dem Einstellen des neuen Inhalts hat nicht geholfen, auch nicht mit einer Verzögerung.
Es scheint, als ob einmal ein UITextView in getippt wurde, ist es für immer in diesem Modus ist, wo lästiges Scrollen Artefakte neue Inhalte einstellen verursacht. Ich habe versucht, selectionRange auch auf den Anfang der UITextView zu setzen, aber das hat nicht geholfen. Es hat auch nicht geholfen, die resignFirstResponder-Nachricht zu senden, bevor der neue Inhalt eingestellt wurde.
Aus diesem Grund habe ich entschieden, die UITextView jedes Mal zu löschen und neu zu erstellen, wenn ich den Inhalt ändere. Das ist ein selten genug Ereignis (basierend auf menschlicher Interaktion) in meiner App, dass es kein Leistungsproblem ist. Es war die einzige Möglichkeit, "neue Inhalte" ohne lästige Scrolling-Artefakte in den UITextView zu laden.
Meine Erfahrung ist, mit OS3.2 (ipad Simulator)
[textview setScrollEnabled:YES];
textview.text = yourText;
[textview setScrollEnabled:NO];
wollte ich eigentlich den TextView vom Scrollen beim Aktualisieren des Inhalts stoppen , also habe ich es einfach umgekehrt gemacht und es funktioniert einwandfrei. Vielen Dank. – soemarko
ich es geschafft, um das gewünschte Ergebnis zu erhalten - zwingt die UITextView zu ‚blättern‘ an die Spitze ihres Inhalts, wenn Enden bearbeiten. Aber um es zu erreichen, musste ich das Scrollen in textViewDidEndEditing BEIDE deaktivieren und auch den Text auf die gleiche Weise zurücksetzen.
ich wieder aktivieren Scrollen in TextViewDidBeginEditing.
- (void) textViewDidEndEditing: textView;
{
[textView setScrollEnabled: NO];
NSString* savedText = [textView text];
[textView setText:@""];
[textView setText: savedText];
}
Dies funktioniert, wenn Sie es wollen nach oben, um nach oben:
[theTextView scrollRangeToVisible:NSMakeRange(0, 0)];
Das einzige Problem ist, dass dieser seinen Weg bis beseelt. Wenn Sie es an die Spitze schnappen möchten, verwenden Sie diese:
[theTextView scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:NO];
Diese Lösung funktionierte für mich. Ich habe Text in viewDidLoad geladen, das ContentInset von UITextView geändert und dann scrollRectToVisible verwendet, um den oberen Bereich richtig auszurichten. Vielen Dank – TMilligan
Was schließlich für mich gearbeitet, was den Textinhalt zu löschen und setzen Sie ihn dann mit dem gewünschten Text auf der nächsten Lauf Schleife.
// clear the text view
self.textView.text = ""
// set the text on the next run loop
dispatch_async(dispatch_get_main_queue()) {
self.textView.text = someText
}
- 1. iPhone UITextView Position relativ
- 2. iPhone - Problem mit UITextView
- 3. Aktualisieren eines UITextView mit Inhalten von NSMutableArray
- 4. iphone UIWebView speichert die aktuelle Bildlaufposition?
- 5. Ändern der Bildlaufposition
- 6. Berechtigte Ausrichtung in UITextView - iPhone
- 7. Suchen von Text aus UITextView in iPhone
- 8. iphone UITextView manuell registerring berührt
- 9. (iPhone) nicht editierbar UITextView "Lesezeichen"
- 10. Bild basierend auf Bildlaufposition ändern
- 11. iPhone: UITextView wrap around UIImage?
- 12. iPhone UITextView scrollbar, aber nicht editierbar
- 13. UICollectionView-Statuswiederherstellung: Anpassen der Bildlaufposition
- 14. SSDP auf dem iPhone
- 15. Empfangen von Daten von der URL auf dem iPhone?
- 16. Einstellen der Bildlaufposition im Bearbeitungssteuerelement
- 17. Angular js Erhaltung der Bildlaufposition
- 18. Mono auf dem iPhone?
- 19. Lassen Sie UITextView auf das Tap-Ereignis reagieren. (iphone)
- 20. UIPickerView, der horizontal auf dem iPhone scrollt?
- 21. Audio auf dem iPhone
- 22. Grafikgenerierung auf dem iPhone
- 23. Lua auf dem iPhone?
- 24. Aktualisieren der Textdatei auf dem FTP-Server?
- 25. Implementieren der Volltextsuche auf dem iPhone?
- 26. Erkennen von Unicode-Zeichen in NSString auf dem iPhone
- 27. iPhone: Testen der Anwendung auf dem iPhone durch Windows
- 28. Spracherkennung auf dem iPhone
- 29. CFAttributedString auf dem iPhone
- 30. Zeichnung auf dem iPhone
Als Hinweis, ich habe versucht, [myTextView scrollRangeToVisible: NSMakeRange ([myTextView.text Länge], 0)] zu verwenden; –