Как вставить текст в любой позиции курсора в uitextview? - PullRequest
16 голосов
/ 13 января 2012

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

есть идеи? заранее спасибо ..

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

Но не получаю.

Ответы [ 4 ]

23 голосов
/ 27 марта 2014

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

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

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

Примечание: это selectedTextRange в протоколе UITextInput, а не selectedRange

11 голосов
/ 19 января 2012

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

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.
4 голосов
/ 09 сентября 2016

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

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

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

3 голосов
/ 01 апреля 2017

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

if let textRange = myTextView.selectedTextRange {
   myTextView.replace(textRange, withText:UIPasteboard.general.string!)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...