【发布时间】:2012-08-01 05:21:44
【问题描述】:
我需要从 uitextview 获取文本。我需要的文本是滚动文本视图后的特定区域,而不是 uitextview 中的所有文本。 我会在一些图片中描述我需要什么。
首先,我有这个文本视图
然后,我想获取一些文本,如下图所示:
但我不知道该怎么做,有人可以帮助我吗? 谢谢
【问题讨论】:
标签: ios text uitextview area rect
我需要从 uitextview 获取文本。我需要的文本是滚动文本视图后的特定区域,而不是 uitextview 中的所有文本。 我会在一些图片中描述我需要什么。
首先,我有这个文本视图
然后,我想获取一些文本,如下图所示:
但我不知道该怎么做,有人可以帮助我吗? 谢谢
【问题讨论】:
标签: ios text uitextview area rect
NSRange range = NSMakeRange(desired_position, 0);
[myTextview setSelectedRange:range];
【讨论】:
有趣且不寻常的问题。
[为 UITextView 重写,原为 UITextField 编写]
UITextView 基本上是包装在 UIScrollView 中的文本输入控件(使用继承)。 UIScrollView 的工作原理是使用其视图相对于其框架的坐标来移动其内容。
查看 UITextView 的 contentOffset 可以得到已经发生的垂直滚动量(文本已经向上滚动,所以 y 值会是负数。)
一旦有了滚动量,就需要获取 UITextView 的字体。使用 NSString sizeWithFont 来获取一行的高度。将 y 坐标除以行高,就可以得出要跳过的换行数。
可见文本的结尾有点不同。根据您的控制器结构,UITextView 可能已调整大小,也可能未调整。例如,如果您使用的是 UITableViewController,它通常会自动调整 tableView 的大小。我将假设您已经调整了 UITextView 的大小,在这种情况下,结束 'y' 是开始 'y' + textView.frame.size.height。如果您没有调整 UITextView 的大小以适应键盘上方的空间,那么您可以更改设计以执行此操作,或者减去屏幕键盘的大小。
希望对你有帮助
【讨论】: