在 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.1
、iOS 10.1
、iOS 11.1
、iOS 12.4
,都是有效的。不知道你的环境怎么样
还有一点需要注意的是,在执行那段代码之前,请确保myTextView
已经创建成功。我测试的时候用storyboard
创建了myTextView
,把你的代码加到viewDidLoad
.
从 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.1
、iOS 10.1
、iOS 11.1
、iOS 12.4
,都是有效的。不知道你的环境怎么样
还有一点需要注意的是,在执行那段代码之前,请确保myTextView
已经创建成功。我测试的时候用storyboard
创建了myTextView
,把你的代码加到viewDidLoad
.