iOS: Skalieren von UITextView mit Pinching?

8

Ich bin daran interessiert, UITextView zu erstellen, das dynamisch expandiert, während der Text eingegeben wird, und skaliert, wenn der Benutzer den Bildschirm klemmt (ähnliches Verhalten kann in TinyPost gefunden werden).

Wenn Sie nur tippen (ohne zu kneifen), wird die textView-Funktion erweitert. Wenn Sie nur drücken (ohne zu tippen), funktioniert das gut, aber wenn Sie drücken und dann tippen, wird der Text abgeschnitten.

Hier ist mein Code:

%Vor%

Was denkst du?

    
Alex1987 02.12.2012, 12:53
quelle

5 Antworten

11

Versuchen:

%Vor%

Es skaliert im Grunde die Schriftgröße und berechnet dann die Inhaltsgröße mit Ihrem Code in textViewDidChange neu.

    
k20 06.12.2012, 20:24
quelle
2

Um auf @Canoatinetics zu antworten, antworten Sie oben. Ich habe die Gestenhandling-Idee für attributierte Strings auf iOS 7 implementiert, aber es ist zu langsam, wenn Sie zu viele Zeichensatzänderungen in der Zeichenkette haben. Es gibt auch einen lächerlichen Puffer-Bug in iOS 7, bei dem Change-Benachrichtigungen lange brennen, nachdem Sie aufgehört haben zu kneifen - erinnert mich an den blöden Tastatur-Puffer in frühen Versionen von PC-DOS. Wie auch immer, ich habe den Code unten gesetzt, der das für mich funktioniert hat - obwohl es nur dazu geführt hat, mich zu informieren, dass das Zeitverschwendung ist und ich meinen Benutzern eine andere Möglichkeit geben muss, ihre Schriften zu skalieren.

%Vor%     
amergin 20.06.2014 20:40
quelle
2

Fügen Sie zunächst pinchGestureRecognize in der viewDidLoad-Methode hinzu:

%Vor%

setze diese Methode in deinen viewController, um die Textfeldschrift zu skalieren:

%Vor%     
jayesh lathiya 06.10.2015 12:01
quelle
0

UITextView ist eine Unterklasse von UIScrollView und als solche müssen Sie tun, was Sie mit einer Bildlaufansicht machen, um das Zoomen zu ermöglichen:

  • legt die minimalen und maximalen Zoom-Skalierungseigenschaften fest
  • Legen Sie viewForZooming über die ScrollView-Delegate-Methode
  • fest

... zoomt die gesamte Textansicht.

Wenn Sie nur den Text zoomen möchten, müssen Sie diese Schritte mit einem Pinch-Gesten-Erkenner ausführen:

  • ruft die aktuelle attributierte Zeichenfolge
  • ab
  • Durchlaufen Sie die Schriftartenbereiche und ersetzen Sie das font-Attribut durch ein skaliertes
  • Ersetzen Sie den Text in der Textansicht durch Ihre geänderte Version
  • Wahrscheinlich müssen Sie auch die Textauswahl nach dem Einstellen des Textes einstellen
Cocoanetics 10.12.2012 09:16
quelle
0

Nicht die beste, aber einfachste Lösung wäre:

Ich kenne Ihren Anwendungsfall nicht genau, aber ich denke, es macht in vielen Fällen keinen Sinn, in einer App Pinch-Zoom beim Eintippen von Text zu unterstützen. Ich würde einfach ein Flag setzen, das den Pinch-Zoom verhindert, während der Benutzer Text schreibt.

Wenn Sie meinen, die Textansicht zu bearbeiten, können Sie die Bearbeitung zu Beginn der Pinch-Geste beenden und mit dem Bearbeiten beginnen, nachdem die Pinch-Geste beendet wurde.

    
Mert 10.12.2012 13:05
quelle