Я создаю приложение на 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];
}
Однако как можно знать, это только удаляет последний знак, неважно, где курсор. Кто-либо знает лучшее решение?
Большое спасибо!
Рассмотрите возможность переключения на UITextView
, который имеет свойство selectedRange
для получения текущего выбранного диапазона символов или местоположения курсора, если ничего не выбрано. К сожалению, UITextField
не имеет этого метода, и я не нашел другого способа найти местоположение курсора.
Документацию по свойству selectedRange
можно найти здесь здесь, на веб-сайте Apple . Он состоит из NSRange
, в котором selectedRange.location
- это положение курсора, а selectedRange.length
- это количество выбранных символов (или ноль, если ничего не выбрано. ) Ваш код должен выглядеть примерно так:
textView.text = [textView.text stringByReplacingCharactersInRange:textView.selectedRange withString:@""];
UITextView имеет свойство selectedRange
. Учитывая, что вы можете создать диапазон для использования со следующим кодом:
textView.text = [textView.text stringByReplacingCharactersInRange:?? withString:@""];
UITextField не имеет такого свойства диапазона. Очевидно, у него есть член _selectionRange
, но он частный.
Я думаю, ваш выбор - либо переключиться на UITextView, либо запретить размещение курсора где угодно, кроме конца текста, и использовать ваш текущий код.
Вы всегда можете отправить отчет об ошибке в Apple с просьбой задокументировать selectedRange
для UITextField или запросить специальное разрешение для прямого доступа к полю.