在 Objective-C 中加载时将光标移动到预填充 Textview 的开头
Posted
技术标签:
【中文标题】在 Objective-C 中加载时将光标移动到预填充 Textview 的开头【英文标题】:Move Cursor to Beginning of Prepopulated Textview On Load in Objective-C 【发布时间】:2019-09-02 14:23:01 【问题描述】:在从 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:> (0, 0)F 所以我认为下一行实际上并没有改变范围。但我不知道其他方法可以做到这一点。
【问题讨论】:
【参考方案1】:我发现您的打印错误,缺少@
NSLog(@"newRange is%@",newRange);
然后我发现你的代码是有效的,光标可以定位到最前面
我用模拟器测试了ios 9.1
、iOS 10.1
、iOS 11.1
、iOS 12.4
,都有效。不知道你的环境怎么样。
还有一点需要注意的是,在执行那段代码之前,确保myTextView
已经创建成功。我在测试时使用storyboard
创建myTextView
,并将您的代码添加到viewDidLoad
中。
【讨论】:
我还把最后一行放在了 dispatch_async(dispatch_get_main_queue(), ^ [self.myTextView setSelectedTextRange:newRange]; );以上是关于在 Objective-C 中加载时将光标移动到预填充 Textview 的开头的主要内容,如果未能解决你的问题,请参考以下文章
进度条不隐藏是当数据在片段中的recyclerview中加载时