как вставить текст в любую позицию курсора в uitextview?

Я хочу реализовать код, с помощью которого я могу начать вставлять текст в любую позицию курсора в UITextView в iphone sdk

любая идея? заранее спасибо..

я сослался на эту ссылку: iPhone SDK: как создать UITextView, который вставляет текст в место касания?

Но не понимаю.


person kushalrshah    schedule 13.01.2012    source источник
comment
Пожалуйста, ответьте, если кто-то пробовал раньше. Я тоже делаю то же самое, но безуспешно, поэтому, пожалуйста, помогите.   -  person Muhammad Rizwan    schedule 17.01.2012


Ответы (4)


Ответ Дэна - вручную изменить текст. Это плохо работает с UITextView's UndoManager.

На самом деле очень легко вставить текст с помощью API протокола UITextInput, который поддерживается UITextView и UITextField.

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

Примечание. В протоколе UITextInput используется selectedTextRange, а не selectedRange.

person ethanhuang13    schedule 26.03.2014

Это то, что я использую с настраиваемой клавиатурой, похоже, работает нормально, может быть более чистый подход, не уверен.

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.
person Dan    schedule 18.01.2012
comment
спасибо, это очень интересно, я использовал его, удалив слово, где курсор помещен в текстовое представление с помощью моей пользовательской клавиатуры :) снова спасибо - person Jaspreet Singh; 28.01.2013
comment
Очень хорошо ... Спасибо, Дэн. - person El Tomato; 01.03.2013

Самый простой способ (но он не заменяет выделенный текст) - использовать _ 1_:

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

UITextView соответствует UITextInput, который сам соответствует UIKeyInput.

person Glorfindel    schedule 09.09.2016

Вот ответ Глорфинделя в Swift3. Текст, который он вставляет сюда, он вытягивает из буфера обмена.

if let textRange = myTextView.selectedTextRange {
   myTextView.replace(textRange, withText:UIPasteboard.general.string!)
}
person user3069232    schedule 01.04.2017