2012-01-13 10 views
12

Chcę zaimplementować kod, za pomocą którego mogę rozpocząć wstawianie tekstu w dowolnym położeniu kursora w UITextView w iphone sdkjak wstawić tekst w dowolnym położeniu kursora w uitextview?

jakiś pomysł? góry dziękuję ..

i sędziował ten link: iPhone SDK: How to create a UITextView that inserts text where you tap?

Ale nie dostanę go.

+0

Proszę Odpowiedz, jeśli ktoś próbował wcześniej. Robię to samo, ale nie osiągam sukcesu, więc proszę o pomoc. –

Odpowiedz

10

To jest to, czego używam z niestandardową klawiaturą, wydaje się działać dobrze, może być czystsze podejście, nie jestem pewien.

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

thanx to jest bardzo ciekawe i użyłem go, usuwając słowo, w którym kursor jest umieszczony w textview przez moją własną klawiaturę :) thanx ponownie –

+0

Bardzo ładne ... Dzięki, Dan. –

18

Odpowiedź Dana polega na ręcznym zmienianiu tekstu. Nie działa dobrze z UndoManager UITextView.

W rzeczywistości bardzo łatwo jest wstawić tekst za pomocą interfejsu API protokołu UITextInput, który jest obsługiwany przez UITextView i UITextField.

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

Uwaga: To selectedTextRange w protokole UITextInput zamiast selectedRange

+0

Dziękuję, że to działa dla mnie. –

+0

Niezły Huang! – Rambatino

+0

Świetne rozwiązanie! – Will

4

Najprostszym sposobem (ale to nie zastąpi zaznaczony tekst) jest użycie metody insertText::

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

UITextView jest zgodny z UITextInput, który jest zgodny z UIKeyInput.

1

Oto odpowiedź Glorfindela w Swift3. Tekst, który wstawia, wyciąga ze schowka.

if let textRange = myTextView.selectedTextRange { 
    myTextView.replace(textRange, withText:UIPasteboard.general.string!) 
} 
Powiązane problemy