(iPhone) SelectedRange für eine nicht eedierbare UitextView (oder andere Methoden des Klickhandlings?)

StackOverflow https://stackoverflow.com/questions/668652

Frage

Ich benutze eine UITextView statische Inhalte zu halten (auf Chinesisch, was bedeutet, dass die Zeichen alle feste Breite sind). Ich möchte den Benutzern auf einen Charakter im Text klicken und Wörterbuchinformationen für diesen Charakter ansprechen. Ich kenne alle Probleme im Zusammenhang mit dem Mangel an Kopie und Einfügen und all dem, aber ich hoffe, dass es eine Möglichkeit gibt, dies zu tun, ohne auf die iPhone 3.0 -Firmware zu warten.

Zuerst dachte ich darüber nach UITextViews selectedIndex Eigentum. Leider, wenn die UITextView ist nicht bearbeitbar, der folgende Code in der UITextView'S gibt immer die Länge des gesamten Textblocks zurück:

NSRange touchPoint = self.selectedRange;
NSLog(@"Selection: %d", touchPoint.location);

Das ist sinnvoll, nehme ich an, wie bei einem nicht eedierbaren UITextView Es gibt keine Möglichkeit, einen Insertionspunkt auszuwählen, aber es hilft mir nichts. :)

Ein anderer Ansatz wäre die Berechnung der Tatsache, dass der chinesische Text eine feste Breite ist, bei der der Klick gelandet ist und welcher Text zu diesem Zeitpunkt unter diesem Ort stehen sollte. Dies wird jedoch durch Interpunktion kompliziert, was dazu führen kann Vorschriften in einer Zeile hinunter.

Gibt es eine andere Art zu wissen, welcher Text unter einem Touch -Ereignis steht, das mir fehlt?

War es hilfreich?

Lösung

Rufen Sie Folgendes an, bevor Sie nach dem fragen selectedRange:

[[textView webView] updateSelectionWithPoint:point];

Hinweis: Beides -webView und -updateSelectionWithPoint: sind private APIs. Sie können das äquivalente Verhalten alsoperformieren, indem Sie bearbeitbar umschalten, Ersthelfer werden und gefälschte Touch -Ereignisse senden, aber das wäre viel mehr Arbeit

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top