Erkennen moment, wenn newline beginnt in UITextView
Ich versuche zu erkennen, wenn die Beförderung geht bei new line in UITextView. Ich kann erkennen, es durch Vergleich insgesamt später Breite mit UITextView Breite:
CGSize size = [textView.text sizeWithAttributes:textView.typingAttributes];
if(size.width > textView.bounds.size.width)
NSLog (@"New line");
Aber es Dosis nicht funktionieren richtigen Weg, weil -sizeWithAttributes:textView
gibt nur die Breite der Buchstaben ohne Einrückung Breite. Bitte helfen dieses Problem lösen.
Ist das der standard
Es ist standard
Sorry, Sie wollen wissen, ob der Benutzer die Taste "enter" während der Eingabe? Oder Sie wollen einfach nur zählen die totale Anzahl der Zeilenumbrüche in den text?
UITextView
Sie verwenden, oder eine Unterklasse version ?Es ist standard
Sorry, Sie wollen wissen, ob der Benutzer die Taste "enter" während der Eingabe? Oder Sie wollen einfach nur zählen die totale Anzahl der Zeilenumbrüche in den text?
InformationsquelleAutor mriddi | 2013-11-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist, wie ich es tun würde:
UITextPosition
des letzten Zeichens.caretRectForPosition
auf IhreUITextView
.CGRect
variable und zunächst speichernCGRectZero
.textViewDidChange:
- Methode, rufen SiecaretRectForPosition:
durch die übergabe derUITextPosition
.CGRect
variable. Wenn die neue y-Ursprung des caretRect größer ist als die Letzte, es bedeutet eine neue Zeile erreicht wurde.Beispielcode:
Außerdem sollten Sie die Dokumentation Lesen, die für
UITextInput
Protokoll Referenz hier. Es ist magisch, sage ich Ihnen.Lassen Sie mich wissen, wenn Sie irgendwelche anderen Probleme mit diesem.
es ist Brillant
Es gibt Fälle, wo dies nicht funktioniert. Was ist, wenn der Benutzer fügt in der text und der Cursor-position bewegt wird, in den Prozess?
Daher habe ich erwähnt, dass die Bedingungen Hinzugefügt.
Bitte kann jemand mir helfen mit die folgende Frage? Wenn der Benutzer schreibt, Aufzählung text (mehrere Zeilenumbrüche) in UITextView, zu erkennen, wie die Gesamtzahl der Zeilenumbrüche?
InformationsquelleAutor n00bProgrammer
For Swift dies
InformationsquelleAutor Sourav Gupta
Swift 3
Die akzeptierte Antwort, und der swift-version funktioniert gut, aber hier ist ein Swift 3-version für die faulen Menschen gibt.
InformationsquelleAutor
Antwort von @n00bProgrammer in
Swift-4
mit genauer Leitungsbruch-Erkennung.@n00bProgrammer Antwort ist perfekt außer eine Sache, die Sie anders reagiert, wenn der Benutzer mit der Eingabe beginnt in der ersten Zeile, es zeigt, dass
Started New Line
zu.Überwindung Problem, hier ist der raffinierte code
InformationsquelleAutor Kiran Jasvanee
Können Sie die UITextViewDelegate
Dies funktioniert nur, wenn der Nutzer drückt return-Taste nicht, wenn die neue Zeile beginnt, weil es am Ende der vorherigen Zeile.
InformationsquelleAutor Stuart Campbell
Müssen Sie die Höhe des Texts, nicht die Breite. Verwenden Sie entweder
sizeWithFont:constrainedToSize:lineBreakMode:
(wenn Sie brauchen, um Unterstützung für iOS 6 oder früher) oder verwenden SieboundingRectWithSize:options:attributes:context:
wenn Sie nur eine iOS-Version 7.Blick auf die docs. Es ist ähnlich wie die
sizeWithAttributes:
Methode, die Sie verwenden. Sie müssen nur eine Größe. Pass in einer Größe mit der gewünschten Breite, und eine sehr große Höhe. Die zurückgegebene Größe das gleiche mit, aber mit dem nötigen Höhe passen Sie den text in die Breite.InformationsquelleAutor rmaddy
SWIFT 4.
Wenn Sie nicht möchten, zu verwenden previousRect. Lassen Sie uns versuchen, diese:
InformationsquelleAutor Carson Vo