Подтвердить что ты не робот

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

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

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

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

Но не получается.

4b9b3361

Ответ 1

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

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

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

Примечание. Он выбралTextRange в UITextInput протоколе, а не выбранном Range

Ответ 2

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

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.

Ответ 3

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

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

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

Ответ 4

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

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