ios - 如何逐行读取 uitextview 文本 iOS?

标签 ios iphone ipad ios5 uitextview

我有带文本的 uitextview。我想逐行阅读它。我希望它适用于 iOS 5 并且没有 - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text; 委托(delegate)方法。我该怎么做?

最佳答案

您可以使用 TextView 的布局管理器来获取它们。但它在 iOS 7 中可用。您可以使用布局管理器的方法 - ( enumerateLineFragmentsForGlyphRange:usingBlock: )

下面的代码打印出如图所示的结果

textView.text =@"abcdsakabsbdkjflk sadjlkasjdlk asjkdasdklj asdpaandjs bajkhdb hasdskjbnas kdbnkja sbnkasj dbkjasd kjk aj";

NSLog(@"%d",_textView.text.length); // length here is 104.

[_textView.layoutManager enumerateLineFragmentsForGlyphRange:NSMakeRange(0, 104) usingBlock:^(CGRect rect, CGRect usedRect, NSTextContainer *textContainer, NSRange glyphRange, BOOL *stop) {

NSLog(@"rect %@ - usedRect %@ - glymph Rangle %d %d -",NSStringFromCGRect(rect),NSStringFromCGRect(usedRect),glyphRange.location,glyphRange.length);
    }]
;

打印结果

2013-12-17 12:48:40.250 testEmpty[675:a0b] rect {{0, 0}, {200, 13.8}} - usedRect {{0, 0}, {176.08398, 13.8}} - glymph Rangle 0 31 -
2013-12-17 12:48:40.251 testEmpty[675:a0b] rect {{0, 13.8}, {200, 13.8}} - usedRect {{0, 13.8}, {182.11328, 13.8}} - glymph Rangle 31 31 -
2013-12-17 12:48:40.251 testEmpty[675:a0b] rect {{0, 27.6}, {200, 13.8}} - usedRect {{0, 27.6}, {168.75977, 13.8}} - glymph Rangle 62 28 -
2013-12-17 12:48:40.252 testEmpty[675:a0b] rect {{0, 41.400002}, {200, 13.8}} - usedRect {{0, 41.400002}, {82.035156, 13.8}} - glymph Rangle 90 14 -

因此,在 block 的每次运行中,您将获得 glymphRange.length 作为该行中使用的字符串的长度。

关于ios - 如何逐行读取 uitextview 文本 iOS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21090331/

相关文章:

iphone - UIWebView加载被覆盖但不会刷新的本地镜像

ios - 带有 Sprite Kit 的硬件特定图集在 iPad 上被炸毁

ios - 将 JSON 解析为 tableview

ios - 如何将 viewControllers 放入循环数组中?

ios - 是否可以在其他 iOS 应用程序中访问 iOS 游戏应用程序的分数?

iphone - "__workq_kernreturn"在 iOS 崩溃日志中或当您暂停应用程序执行时表示什么?

ios - 为所有 iphone 和 ipad 系列设置图标应用程序

html - Safari - 固定导航栏部分显示,直到滚动动画结束

ios - 如何使用正确的自动换行跨等边界 View 拆分 NSAttributedString

ios - 用于用户身份验证的 Swift POST 或 GET 请求 iOS Swift