iOS - 코드블럭 아카이브

UITextView의 글자수와 줄바꿈을 제한하자! (feat. UITextViewDelegate)

Lia's iOS 2023. 5. 18. 09:11
extension MyViewController: UITextViewDelegate {
    func textViewDidChange(_ textView: UITextView) {
        guard let text = textView.text else { return }
        
        // 글자수 제한
        let maxLength = 100
        if text.count > maxLength {
            textView.text = String(text.prefix(maxLength))
        }
        
        // 줄바꿈(들여쓰기) 제한
        let maxNumberOfLines = 4
        let lineBreakCharacter = "\n"
        let lines = text.components(separatedBy: lineBreakCharacter)
        var consecutiveLineBreakCount = 0 // 연속된 줄 바꿈 횟수

        for line in lines {
            if line.isEmpty { // 빈 줄이면 연속된 줄 바꿈으로 간주
                consecutiveLineBreakCount += 1
            } else {
                consecutiveLineBreakCount = 0
            }

            if consecutiveLineBreakCount > maxNumberOfLines {
                textView.text = String(text.dropLast()) // 마지막 입력 문자를 제거
                break
            }
        }
    }
}