JTSSmartPunctuation 1.0.0

JTSSmartPunctuation 1.0.0

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

Jared Sinclair维护。



  • 作者:
  • Jared Sinclair

一个用于在 UITextView 中添加实时智能标点的即时效用。适用于 iOS 7 或更高版本。

智能化是什么?

JTSSmartPunctuation 将常见的由笨拙标点符号组成的简写替换为其智能对应项。它将笨拙的引号转换为 智能引号,三个连续的句号转为一个 省略号,三个连续的破折号转为一个 破折号,以及两个连续的破折号后接非破折号的任何内容转为一个 连字符。它与 从右到左的语言 兼容,并且可以安全地与合成字符序列(如 表情符号)一起使用。它只扫描最近编辑的周边区域,因此即使是非常长的文本段落也可执行良好。

用法

在 iOS 7 或更高版本中,类似于 UITextView 的文本输入视图使用 NSTextStorage 实例作为其文本的后备存储。这个文本存储对象接受一个可选的符合 NSTextStorageDelegate 协议的代理。此协议包括以下方法

- (void)textStorage:(NSTextStorage *)textStorage 
 willProcessEditing:(NSTextStorageEditActions)editedMask 
              range:(NSRange)editedRange 
     changeInLength:(NSInteger)delta;

这个方法在用户对文本进行了新的编辑后调用,但在该编辑被提交和 UI 更新之前。因此,这是用智能标点替换笨拙标点符号的完美时机。

您的应用程序需要一个对象将其设为文本视图文本存储的代理

[self.textView.textStorage setDelegate:self];

然后实现以下代理方法

- (void)textStorage:(NSTextStorage *)textStorage
 willProcessEditing:(NSTextStorageEditActions)editedMask
              range:(NSRange)editedRange
     changeInLength:(NSInteger)delta {

    [JTSSmartPunctuation fixDumbPunctuation:textStorage
                                editedRange:editedRange
                            textInputObject:self.textView];
}

就是这样。