Как моделировать клавишу Delete на UITextField?

Я создаю приложение на iPad. Я создаю пользовательское использование клавиатуры UITextField inputView свойство. Для вставки текста в позиции курсора я использую копию и метод вклеивания (http://dev.ragfield.com/2009/09/insert-text-at-current-cursor-location.html), который хорошо работает. Теперь, я хочу создать клавишу Delete. Код, который я использую:

if (textField.text.length > 0) {
    textField.text = [textField.text substringToIndex:textField.text.length-1];
}

Однако как можно знать, это только удаляет последний знак, неважно, где курсор. Кто-либо знает лучшее решение?

Большое спасибо!

7
задан pnuts 26 November 2015 в 10:12
поделиться

2 ответа

Рассмотрите возможность переключения на UITextView , который имеет свойство selectedRange для получения текущего выбранного диапазона символов или местоположения курсора, если ничего не выбрано. К сожалению, UITextField не имеет этого метода, и я не нашел другого способа найти местоположение курсора.

Документацию по свойству selectedRange можно найти здесь здесь, на веб-сайте Apple . Он состоит из NSRange , в котором selectedRange.location - это положение курсора, а selectedRange.length - это количество выбранных символов (или ноль, если ничего не выбрано. ) Ваш код должен выглядеть примерно так:

textView.text = [textView.text stringByReplacingCharactersInRange:textView.selectedRange withString:@""];
2
ответ дан 6 December 2019 в 06:35
поделиться

UITextView имеет свойство selectedRange . Учитывая, что вы можете создать диапазон для использования со следующим кодом:

textView.text = [textView.text stringByReplacingCharactersInRange:?? withString:@""];

UITextField не имеет такого свойства диапазона. Очевидно, у него есть член _selectionRange , но он частный.

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

Вы всегда можете отправить отчет об ошибке в Apple с просьбой задокументировать selectedRange для UITextField или запросить специальное разрешение для прямого доступа к полю.

0
ответ дан 6 December 2019 в 06:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: