Как вставить текст в любую позицию курсора в uitextview?
Я хочу реализовать код, с помощью которого я могу начать вставлять текст в любую позицию курсора в UITextView в iphone sdk
любая идея?
спасибо заранее.
Я ссылался на эту ссылку: iPhone SDK: как создать UITextView, который вставляет текст, куда вы нажимаете?
Но не получается.
Ответы
Ответ 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!)
}