Моя проблема заключается в том, что программная установка выделенного диапазона UITextView выбирает текст, но не визуально указывает, что он выбран. Это звучит как ошибка в OS 3.0/3.1. Что еще более важно, какое-либо решение или предложения по отображению выбора? (пример проекта, связанный в нижней части сообщения)
Как узнать, что он выбран, поскольку я не получаю визуальных отзывов? Две причины:
- Не мигает курсор
- При нажатии любой клавиши на клавиатуре удаляется существующий текст в диапазоне выбора.
У меня есть UITextView в viewcontroller, который позволяет редактировать изменяемое пользователем значение. Контроллер редактора открывается, когда в строке таблицы принимается двойное нажатие или пользователь вводит кнопку раскрытия подробностей в строке. Контроллер view приходит через presentModalViewController, а в редакторе VC viewWillAppear метод, я запускаю клавиатуру с помощью [self.textView becomeFirstResponder];
Иногда я хочу запустить редактор со всем содержимым выбранного текстового поля, чтобы пользователь мог просто начать вводить текст, и он удалит существующее содержимое (это потому, что я создаю новые элементы с названиями по умолчанию, поэтому он почти уверен в том, что пользователь сначала удалите все содержимое текстового поля редактора, затем введите их название).
Некоторые из вещей, которые я уже пробовал:
- установка выбранного диапазона в viewDidAppear (вместо этого и в дополнение к его выполнению в textViewDidBeginEditing).
- Замена _textView.text с копией текста в нем, а затем использование выделенногоRange (в textViewDidBeginEditing)... мышление, возможно, если я имею дело с ошибкой фреймворка, это может обойти его.
-
[[_textView webView] selectAll];
(частный api). такое же поведение, текст выбирается без визуальной обратной связи. - отправка _textView setNeedsDisplay и setNeedsLayout.
- с помощью функции performSelector... afterDelay для установки выбранного диапазона так, чтобы это произошло после выхода из textViewDidBeginEditing.
ссылается на S.O.: здесь и здесь
// UITextFieldDelegate Methods...
- (void)textViewDidBeginEditing:(UITextView *)_textView
{
NSInteger len = [_textView.text length];
if( self.selectInitialText ){
//NOTE: this is not working as expected. Indeed the text is
// selected but the highlighting of the text isn't showing.
_textView.selectedRange = NSMakeRange(0,len);
}
}
- EDIT -
Здесь образец проекта представлен Apple BugReporter. Загрузить образец проекта BugReport_7380723
Дополнительная информация:
При создании и воспроизведении с образцом представления проекта я обнаружил две вещи:
-
Когда выбран текст, но нет выделенного выделения, коснитесь нажатия клавиш, затем "встряхните, чтобы отменить", и исходный текст будет восстановлен , но IS выделен.
-
Если вы вручную сделаете выделение в текстовом виде, нажмите кнопку "Выбрать все" [ссылается на примерный проект, связанный выше], весь текст выбран И отображает выделение правильно.