2012-01-13 15 views
12

voglio implementare il codice con cui posso iniziare a inserire il testo in qualsiasi posizione del cursore in UITextView in iphone sdkcome inserire il testo in qualsiasi posizione del cursore in uitextview?

qualche idea? grazie in anticipo ..

i refereed questo link: iPhone SDK: How to create a UITextView that inserts text where you tap?

Ma non ottenerlo.

+0

Si prega di rispondere se qualcuno ha provato prima. Sto anche facendo lo stesso, ma non ottenendo successo quindi per favore aiutatemi. –

risposta

10

Questo è quello che uso con una tastiera personalizzata, sembra funzionare bene, potrebbe esserci un approccio più pulito, non è sicuro.

NSRange range = myTextView.selectedRange; 
NSString * firstHalfString = [myTextView.text substringToIndex:range.location]; 
NSString * secondHalfString = [myTextView.text substringFromIndex: range.location]; 
myTextView.scrollEnabled = NO; // turn off scrolling 

NSString * insertingString = [NSString stringWithFormat:@"your string value here"]; 

myTextView.text = [NSString stringWithFormat: @"%@%@%@", 
       firstHalfString, 
       insertingString, 
       secondHalfString]; 
range.location += [insertingString length]; 
myTextView.selectedRange = range; 
myTextView.scrollEnabled = YES; // turn scrolling back on. 
+0

grazie è molto interessante l'ho usato cancellando la parola dove il cursore è collocato in textview dalla mia tastiera personalizzata :) grazie ancora –

+0

Molto bello ... Grazie, Dan. –

18

La risposta di Dan sta modificando manualmente il testo. Non sta giocando bene con UndoManager di UITextView.

In realtà è molto semplice inserire testo con l'API del protocollo UITextInput, supportata da UITextView e UITextField.

[textView replaceRange:textView.selectedTextRange withText:insertingString]; 

Nota: E 'selectedTextRange nel protocollo UITextInput, piuttosto che selectedRange

+0

Grazie per me. –

+0

Bello uno Huang! – Rambatino

+0

Ottima soluzione! – Will

4

Il modo più semplice (ma non sostituirà il testo selezionato) è quello di utilizzare il metodo insertText::

[textView insertText:@"some text you want to insert"]; 

UITextView conforme allo UITextInput che a sua volta è conforme a UIKeyInput.

1

Ecco la risposta di Glorfindel in Swift3. Il testo è inserito qui che estrae dagli Appunti.

if let textRange = myTextView.selectedTextRange { 
    myTextView.replace(textRange, withText:UIPasteboard.general.string!) 
} 
Problemi correlati