如何使UITextview自动编号时,按下返回键在swift



当用户按[返回]键时需要显示号码。比如每一行的序列号[1,2等]。有什么办法吗?

下面的代码I tried

 func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
    var textview_text_nssring = textView.text as NSString


    // Add "1" when the user starts typing into the text field

    if  (range.location == 0 && textView.text.isEmpty ) {

        if text == "n" {
            textView.text = "1."
            let cursor = NSMakeRange(range.location + 3, 0)
            textView.selectedRange = cursor
            return false
        }
        else {
            textView.text = NSString(format: "1. %@", text) as String
        }

    }


 return true
}

为当前行号声明一个Int变量,并在shouldChangeTextIn range中像这样使用它

var currentLine: Int = 1 
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
    // Add "1" when the user starts typing into the text field
    if  (textView.text.isEmpty && !text.isEmpty) {
        textView.text = "(currentLine). "
        currentLine += 1
    }
    else {
        if text.isEmpty {
            if textView.text.characters.count >= 4 {
                let str = textView.text.substring(from:textView.text.index(textView.text.endIndex, offsetBy: -4))
                if str.hasPrefix("n") {
                    textView.text = String(textView.text.characters.dropLast(3))
                    currentLine -= 1
                }
            }
            else if text.isEmpty && textView.text.characters.count == 3 {
                textView.text = String(textView.text.characters.dropLast(3))
                currentLine = 1
            }
        }
        else {
            let str = textView.text.substring(from:textView.text.index(textView.text.endIndex, offsetBy: -1))
            if str == "n" {
                textView.text = "(textView.text!)(currentLine). "
                currentLine += 1
            }
        }
    }
    return true
}

相关内容

  • 没有找到相关文章

最新更新