Jos*_*urr 13 tokenize uitextview ios swift
我有一个UITextView,并使用其tokenizer来检查用户点击的单词.
我的目标是改变tokenizer所认为的单词.目前似乎将单词定义为连续的字母数字字符,我希望将单词定义为不是空格字符("")的连续字符.
例如:'foo-bar','foo/bar'和'foo @@ bar'目前都将被视为两个单独的单词('foo'和'bar'),但我希望它们都被视为单个单词单词(因为它们都不包含空格).
该文档讨论了UITextInputStringTokenizer类的子类化,但我找不到某个人这样做的例子,我无法弄清楚如何实现所需的方法:
func isPosition(position: UITextPosition, atBoundary granularity: UITextGranularity, inDirection direction: UITextDirection) -> Bool
func isPosition(position: UITextPosition, withinTextUnit granularity: UITextGranularity, inDirection direction: UITextDirection) -> Bool
func positionFromPosition(position: UITextPosition, toBoundary granularity: UITextGranularity, inDirection direction: UITextDirection) -> UITextPosition?
func rangeEnclosingPosition(position: UITextPosition, withGranularity granularity: UITextGranularity, inDirection direction: UITextDirection) -> UITextRange?
Run Code Online (Sandbox Code Playgroud)
总而言之,创建扩展的实现UITextInputStringTokenizer
并保持大多数方法不变(或仅调用super
)
您只需要覆盖isPosition(_:atBoundary:inDirection:)
andisPosition(_:withinTextUnit:inDirection:)
当粒度为单词时,检查该位置旁边的字符是否被视为位于单词边界中,即字母数字字符和空格在一起。默认实现还将返回true
被视为不属于单词一部分的其他非空格,而是将它们视为构成单词的一部分。当粒度不是单词时,您super
也可以默认为。
归档时间: |
|
查看次数: |
699 次 |
最近记录: |