UITextView:如何以编程方式设置 selectedRange 并成为FirstResponder?

发布于 2024-09-04 03:36:37 字数 533 浏览 6 评论 0原文

我有一个包含文档的 UITextView。如果用户触摸文档,插入点(selectedRange 属性)将被适当设置,并且 UITextView 将成为第一个响应者(键盘出现)。耶!

我怎样才能以编程方式做同样的事情?假设我有一个标题为“在第 1,000 个字符处编辑”的按钮。我希望将 selectedRange 设置为 [1000, 0] ,然后使 textview 成为第一响应者。

问题...

  1. textview.selectedRange setter 似乎仅在从 viewDidAppear 调用时才有效。

  2. [textviewBecomeFirstResponder]将插入点设置为文档末尾。

所以,我能做的最好的就是首先成为FirstResponder,然后设置selectedRange。用户看到视图滚动到文档底部,然后返回到所需的插入点。有点丑。

我是否应该在转换过程中尝试通过修改“scrollEnabled”和“editable”标志来隐藏丑陋?或者有更好的方法来做到这一点吗?

I have a UITextView containing a document. If the user touches the document, the insertion point (selectedRange property) is set appropriately and the UITextView becomes the first responder (keyboard appears). YAY!

How can I do the same thing programmatically? Let's say I have a button titled "Edit at character 1,000". I want that to set selectedRange to [1000, 0] and then make the textview become the first responder.

Problems...

  1. textview.selectedRange setter only seems to have an effect when called from viewDidAppear.

  2. [textview becomeFirstResponder] sets the insertion point to the end of the document.

So, the best I can do is first becomeFirstResponder and then set selectedRange. The user sees the view scroll to the bottom of the document and then back up to the desired insertion point. Kinda ugly.

Should I try to hide the ugliness by hacking 'scrollEnabled' and 'editable' flags during the transition? Or is there a better way to do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

白馒头 2024-09-11 03:36:37

你可能会被困在黑客攻击中。这个怎么样:

当您设置选定范围时隐藏视图(也许通过在 UITextView 上放置另一个相同大小的视图)来隐藏难看的滚动。然后,当选择范围时,在 viewDidAppear 之后一段时间设置取消隐藏视图。

You may be stuck doing a hack. How about this one:

Hide the view when you set the selected range (perhaps by putting another view of the same size over the UITextView) to hide the ugly scrolling. Then when the range is selected set unhide the view, some time after viewDidAppear.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文