Wie kann ich den ausgewählten Textrahmen von einem UITextView abrufen?

8

Ich versuche, ein UIPopoverController aus dem rect eines ausgewählten Textes in UITextView anzuzeigen. Wie kann ich den ausgewählten Text CGRect ?

erhalten

Danke!

    
Till 30.12.2011, 20:38
quelle

2 Antworten

34

Ich denke, dass [UITextInput selectedTextRange] und [UITextInput caretRectForPosition:] genau das sind, wonach Sie suchen.

[UITextInput selectedTextRange] gibt den ausgewählten Bereich in Zeichen

zurück

[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.

    
barley 30.12.2011, 20:54
quelle
19

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:

ein genaueres Ergebnis erhalten %Vor%

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)]) { …

    
robotspacer 08.03.2013 17:32
quelle