1

在从 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 所以我认为下一行实际上并没有改变范围。但我不知道另一种方法可以做到这一点。

4

1 回答 1

1

我发现您的打印错误,缺少一个@

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

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

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

还有一点需要注意的是,在执行那段代码之前,请确保它myTextView已经创建成功。我曾经在测试时storyboard创建myTextView,并将您的代码添加到viewDidLoad.

于 2019-09-03T01:57:28.893 回答