在 Objective-C 中加载时将光标移动到预填充 Textview 的开头

Move Cursor to Beginning of Prepopulated Textview On Load in 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 所以我认为下一行实际上并没有改变范围。但我不知道还有其他方法可以做到这一点。

我发现你打印错了,少了一个@

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

然后我发现你的代码有效,光标可以定位到前面

我用模拟器测试了iOS 9.1iOS 10.1iOS 11.1iOS 12.4,都是有效的。不知道你的环境怎么样

还有一点需要注意的是,在执行那段代码之前,请确保myTextView已经创建成功。我测试的时候用storyboard创建了myTextView,把你的代码加到viewDidLoad.