Ich denke, dass [UITextInput selectedTextRange]
und [UITextInput caretRectForPosition:]
genau das sind, wonach Sie suchen.
[UITextInput selectedTextRange]
gibt den ausgewählten Bereich in Zeichen
[UITextInput caretRectForPosition:]
gibt die CGRect
des Zeichenbereichs in dieser Eingabe zurück.
UITextView
entspricht UITextInput
(seit iOS 5), sodass Sie diese Methoden für Ihre UITextView
-Instanz verwenden können.
Es wird so etwas sein.
%Vor%BEARBEITEN: Da der Beispielcode etwas schwierig zu bekommen war, habe ich ein Bild zur Ergänzung hinzugefügt.
Es gibt Situationen, in denen die Antwort von Gerste nicht das Zentrum der Auswahl darstellt. Zum Beispiel:
In diesem Fall wird das Menü Kopieren / Einfügen in der Mitte der Auswahl angezeigt, die sich über die gesamte Breite des Textfelds erstreckt. Aber die Berechnung der Mitte der beiden Karrikaturen würde eine Position viel weiter nach rechts geben.
Sie können mit selectionRectsForRange:
Es sollte auch klargestellt werden, dass, wenn Sie immer noch iOS 4 unterstützen und eine dieser Antworten verwenden, Sie sicherstellen müssen, dass diese Methoden unterstützt werden, bevor Sie sie aufrufen: if ([textView respondsToSelector:@selector(selectedTextRange)]) { …
Tags und Links iphone ios ipad cocoa-touch uipopovercontroller