ICTextView 2.0.1

ICTextView 2.0.1

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2015年10月

Ivano Bilenchi 维护。




  • 作者:
  • Ivano Bilenchi

Screenshot

作者

描述

ICTextView 是一个具有字符串/正则表达式搜索和突出显示优化的 UITextView 子类。

它还包含对标准 UITextView 进行的一些 iOS 7+ 特定的改进和错误修复。

功能

  • 支持字符串字面量和正则表达式搜索。
  • 匹配突出显示。
  • 高度可定制。
  • 不使用代理方法(您仍然可以自己实现)。
  • 方法用于处理 iOS 7+ 中的 contentInsettextContainerInset
  • 包含许多已知的 iOS 7+ UITextView 错误的解决方案。

兼容性

支持的 iOS 版本: 4.x 及以上(匹配突出显示从 iOS 5.x 开始)。

支持的 iOS SDK: 5.x 及以上。

安装

ICTextView 可以通过 CocoaPods 安装(只需将 pod 'ICTextView' 添加到您的 Podfile,然后运行 pod install)或作为 Git 子模块

或者,您可以克隆此仓库,甚至只需获取 ICTextView 目录并将其放在项目中的某个位置。

ICTextView 需要 QuartzCore 框架,因此在您的构建设置中确保将其链接到它。

这是一个 ARC 项目,这意味着您必须启用 ARC(全局或对 ICTextView 目录中的每个 .m 源文件)进行编译。

#import "ICTextView.h" 并且您就绪了。

配置

请参阅 ICTextView.h 标头文件中 #pragma mark - Configuration 部分中的注释。

使用

搜索

搜索可以通过 scrollToMatch:scrollToString: 方法来实现。 scrollToMatch: 执行正则表达式搜索,而 scrollToString: 则搜索字符串字面量。

这两种搜索方法都使用了正则表达式,因此利用了 NSRegularExpressionOptions。它们都支持动画、范围限制、自定义结束滚动定位以及前后向搜索方向。

如果找到匹配项,ICTextView 会突出显示主要匹配项,并且用户滚动时开始突出显示其他匹配项。多次搜索相同模式会自动匹配下一个结果。

rangeOfFoundString 属性包含当前搜索匹配项的范围。您可以通过调用 foundString 方法来获取实际的字符串。

resetSearch 方法可以让您将搜索变量恢复到初始值,从而有效地重置搜索。调用 resetSearch 会导致突出显示被释放,而不考虑 maxHighlightedMatches 属性。

在调用此方法后,ICTextView 将停止突出显示结果,直到执行新的搜索。

内容偏移量方法

scrollRangeToVisible:consideringInsets:[...]scrollRectToVisible:animated:consideringInsets:[...] 方法可以让你滚动到某个特定的范围或矩形位置,并最终考虑到内容偏移量。

在 iOS 7 中,scrollRangeToVisible: 的默认行为是这样的,但从那时起(可能是因为一个错误)已经发生了变化。这些方法和搜索方法类似,都支持动画和滚动定位。

其他方法基本上都是显而易见的。有关更多信息,请参阅 ICTextView.h#pragma mark - Misc 部分。

iOS 7 UITextView 错误修正

简而言之,iOS 7 完全破坏了 UITextViewICTextView 包含对一些非常常见问题的修正。

  • NSTextContainer 错误:通过 initWithFrame: 初始化的 UITextView 由于未初始化或错误的 NSTextContainer 而表现出不一致的行为。
  • 光标错误:光标不考虑 contentInsettextContainerInset,并且经常离开可见区域。
  • characterRangeAtPoint: characterRangeAtPoint: 总是返回 nil
  • becomeFirstResponder 错误:在成为第一响应者的情况下,UITextView 滚动到了一个无效的位置。

这些修正,结合考虑 contentInsettextContainerInset 的自定义方法,应该会让使用 ICTextView 比使用标准的 UITextView 更容易忍受。

ICTextView 引入的错误修正将在 Apple 修复它们后立即删除(或将它们隔离)。

许可

ICTextView 在 MIT 许可下提供。有关更多信息,请参阅 LICENSE 文件。