программно Моя проблема заключается в том, что установка программно selectedRange из UITextView выбирает текст, но не визуально показывают, что он выбран. Это звучит как ошибка в OS 3.0/3.1. Что еще более важно, какое-либо решение или предложения по отображению выбора? (пример проекта, связанный внизу сообщения)UITextView selectedRange не отображается при установке
Как я узнаю, что он выбран, так как я не получаю визуальную обратную связь? Две причины:
- Нет мигающий курсор
- врезки любую клавишу на клавиатуре удаляет существующий текст в диапазоне выбора.
У меня есть UITextView в viewcontroller, который позволяет редактировать изменяемое пользователем значение. Контроллер редактора открывается, когда в строке таблицы принимается двойное нажатие или пользователь вводит кнопку раскрытия подробностей в строке. ViewController поступает через presentModalViewController, и в методе viewWillAppear VC в редакторе, я начинаю клавиатуру с [self.textView becomeFirstResponder];
Иногда я хочу, чтобы запустить редактор с полным содержанием TextView выбранного таким образом, пользователь может просто начать печатать, и это будет удалить существующее содержимое (это связано с тем, что я создаю новые элементы с названиями по умолчанию, поэтому почти наверняка пользователь сначала удалит все содержимое текстового поля редактора, а затем наберет название).
Некоторые из вещей, которые я пробовал уже:
- настройки выбранного диапазона в viewDidAppear (вместо и в дополнение к выполнению его в textViewDidBeginEditing).
- Замена _textView.text с копией текста в нем, а затем применение выделенного диапазона (в textViewDidBeginEditing) ... мышление, возможно, если я имею дело с фреймворком, это может обойти его.
[[_textView webView] selectAll];
(частный api). такое же поведение, текст выбирается без визуальной обратной связи.- отправка _textView setNeedsDisplay и setNeedsLayout.
- с помощью performSelector ... afterDelay для установки выбранного диапазона так, чтобы это произошло после выхода из textViewDidBeginEditing.
// 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.Download BugReport_7380723 sample project
Дополнительная информация:
При создании и играя с представлением образцов проекта, я обнаружил две вещи:
Когда там текст выбран, но не отображается ни один изюминка, нажмите несколько нажатий клавиш, затем " встряхнуть, чтобы отменить ", а исходный текст восстановлен , но IS выделены.
Если вручную сделать выбор в TextView, затем нажмите кнопку «Выбрать все» кнопку [относится к проекту образца, связанного выше], выбирается весь текст И отображает Изюминкой правильно.
Спасибо за обходное предложение. Но в этом случае это действительно не место. У меня есть объект с определенным редактируемым «заголовком»; заполнитель исчезнет, когда поле «откроется» для редактирования. Мой текст должен оставаться, но указывать, что он выбран, и, таким образом, действие клавиатуры заменит выбор, или им нужно нажать в поле, чтобы убить выделение. Более того, виджет любого вида, поддерживающего выбор, должен указывать выбранное состояние, поэтому это, скорее всего, ошибка (я опубликовал отчет об ошибке сразу после публикации здесь). Меня больше интересуют обходные пути, которые вызывают выбор. спасибо. – wkw