Swift 3 - 在UITextView中检测新行

时间:2017-01-17 18:23:52

标签: ios swift uitextview

我正在尝试在UITextView上计算(实时)新行,我发现下面的方法运行良好但我实际上需要添加更多功能但我不知道该怎么做。

func textViewDidChange(_ textView: UITextView) {
    let pos = textView.endOfDocument
    let currentRect = textView.caretRect(for: pos)
    if previousRect != CGRect.zero {
        if currentRect.origin.y > previousRect.origin.y {
            //increase the counter
            counter += 1
        }
    }
    previousRect = currentRect
}

好的,代码工作正常,但我需要:

  1. 在用户删除行
  2. 时减少计数器counter -= 1
  3. 实际上这个代码在检测到新行时会增加计数器,而是当按下键盘上的返回按钮时我需要增加计数器,这样用户就有可能超出文本视图的帧宽而不增加计数器< / LI>

    我不知道该怎么做,你有什么建议吗?

    编辑(可视示例)

    enter image description here

    这里的输出是4

2 个答案:

答案 0 :(得分:0)

你可以听取每个角色的变化,只是通过这个委托函数https://developer.apple.com/reference/uikit/uitextviewdelegate/1618630-textview

检查它是否是新行

答案 1 :(得分:0)

我自己解决了这个问题,如果有人需要,我会发布下面的代码(检查代码中的注释):

"EmployeeFirstName" = My2 
or "EmployeeFirstName" = My