Переместить курсор в начало предварительно заполненного текстового просмотра при загрузке в Objective-C

При загрузке контроллера представления из кода, в котором UITextView предварительно заполнен некоторым текстом, я хотел бы, чтобы курсор находился в начале текста, а не в конце.

Однако следующий код не действует. Курсор по-прежнему отображается в конце предварительно заполненного текста.

Что я могу сделать, чтобы переместить курсор в начало текста?

   self.myTextView.text = @"Text that should go after cursor";
    [self.myTextView becomeFirstResponder];      
    UITextPosition* start = self.myTextView.beginningOfDocument;
    UITextRange *newRange = [self.myTextView textRangeFromPosition:start toPosition:start];
NSLog("newRange is%@",newRange);
    [self.myTextView setSelectedTextRange:newRange];

Обратите внимание, newRange записывается как <_UITextKitTextRange: 0x17463f0c0> (0, 0)F, поэтому я думаю, что следующая строка фактически не меняет ранг. Но я не знаю другого способа сделать это.

1 ответ

Решение

Я обнаружил, что ваш отпечаток неправильный, отсутствует @

NSLog(@"newRange is%@",newRange);

Затем я обнаружил, что ваш код эффективен, курсор можно расположить впереди

Я тестировал iOS 9.1iOS 10.1iOS 11.1iOS 12.4с симулятором, все из которых эффективны. Я не знаю, каково ваше окружение.

Еще одно замечание: перед выполнением этого фрагмента кода убедитесь, что myTextViewбыл успешно создан. я использовалstoryboard создать myTextView когда я тестировал и добавил ваш код в viewDidLoad.

Другие вопросы по тегам