2013-03-26 12 views
9

Ho bisogno di ottenere il valore numerico di inizio e fine di un intervallo UIText. Finora posso solo stampare la descrizione come una stringa.Obiettivo C come ottenere il valore numerico di una UITextPosition

Dall'osservazione del SelectedRange selezionato, deduco che si tratti di una struttura? Come ottengo un elemento di una struct?

UITextRange *selectedRange = [myTextView selectedTextRange]; 

NSLog(@"selectedRange.start %@, selectedRange.end %@ ", selectedRange.start.description, selectedRange.end.description); 

Ecco la descrizione:

2013-03-26 13:44:03.127 AttributedString[24678:907] selectedRange.start <UITextPosition: 0x1ead8f10, 8, {"Rrrttgh "}, {"gggggh ggg..."}>, selectedRange.end <UITextPosition: 0x1eaf7860, 14, {"...tgh gggggh"}, {" gggg"}> 

risposta

5

C'è una risposta a una domanda simile qui: UITextPosition to NSRange.

Fondamentalmente si chiama -offsetFromPosition:toPosition: sull'inizio e la fine dello UITextRange, con una posizione iniziale di myTextView.beginningOfDocument.

5

A UITextView è conforme a UITextInput. Come parte di questo protocollo, deve implementare e elaborare le proprie sottoclassi di UITextRange e UITextPosition. Queste non sono strutture, ma oggetti.

È possibile ottenere una semplice posizione numerica utilizzando offSetFromPosition:toPosition: e passando beginningOfDocument per ottenere la posizione iniziale. Tutti questi metodi saranno implementati da UITextView. Puoi anche passare all'inizio e alla fine dell'intervallo per scoprire la durata di una selezione.

Riferimento completo del protocollo here.

Problemi correlati