Ответ 1
Перед настройкой выбора программным способом в текстовом элементе просто вызовите select, чтобы визуально отобразить новый выбор. Например:
[textView select:self];
textView.selectedRange = newSelectedRange;
Моя проблема заключается в том, что программная установка выделенного диапазона UITextView выбирает текст, но не визуально указывает, что он выбран. Это звучит как ошибка в OS 3.0/3.1. Что еще более важно, какое-либо решение или предложения по отображению выбора? (пример проекта, связанный в нижней части сообщения)
Как узнать, что он выбран, поскольку я не получаю визуальных отзывов? Две причины:
У меня есть UITextView в viewcontroller, который позволяет редактировать изменяемое пользователем значение. Контроллер редактора открывается, когда в строке таблицы принимается двойное нажатие или пользователь вводит кнопку раскрытия подробностей в строке. Контроллер view приходит через presentModalViewController, а в редакторе VC viewWillAppear метод, я запускаю клавиатуру с помощью [self.textView becomeFirstResponder];
Иногда я хочу запустить редактор со всем содержимым выбранного текстового поля, чтобы пользователь мог просто начать вводить текст, и он удалит существующее содержимое (это потому, что я создаю новые элементы с названиями по умолчанию, поэтому он почти уверен в том, что пользователь сначала удалите все содержимое текстового поля редактора, затем введите их название).
Некоторые из вещей, которые я уже пробовал:
[[_textView webView] selectAll];
(частный api). такое же поведение, текст выбирается без визуальной обратной связи.ссылается на 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 выделен.
Если вы вручную сделаете выделение в текстовом виде, нажмите кнопку "Выбрать все" [ссылается на примерный проект, связанный выше], весь текст выбран И отображает выделение правильно.
Перед настройкой выбора программным способом в текстовом элементе просто вызовите select, чтобы визуально отобразить новый выбор. Например:
[textView select:self];
textView.selectedRange = newSelectedRange;
Я сейчас отвечу на свой вопрос и обнов его позже, когда появится дополнительная информация (или если кто-то найдет подходящую работу, я с радостью перевешу чек на свой ответ). У меня есть отчет об ошибке в apple, и после отправки образца кода он сидит там с открытым статусом. Я довольно уверен, что это ошибка, поэтому, когда я получу от них ответ, я пройду здесь.
Внезапно встретите этот вопрос. У меня была такая же проблема, пока я не проверю заголовок объявления NSObject. Они уже предоставили функцию с именем selectAll:
@interface NSObject(UIResponderStandardEditActions) // these methods are not implemented in NSObject
- (void)cut:(id)sender __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);
- (void)copy:(id)sender __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);
- (void)paste:(id)sender __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);
- (void)select:(id)sender __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);
- (void)selectAll:(id)sender __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);
- (void)delete:(id)sender __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_2);
@end
Обходной путь: то, что вам кажется, это UITextView. Это, конечно, не существует. Однако есть некоторые обходные пути здесь