Вы можете сделать свой контроллер представления делегатом вашего текстового представления и использовать replacecingOccurferences, чтобы заменить 4 или более новых строк на 3 новые строки, вам нужно будет избегать новых строк также в начале вашей строки:
class ViewController: UIViewController, UITextViewDelegate {
@IBOutlet weak var textView: UITextView!
override func viewDidLoad() {
super.viewDidLoad()
textView.delegate = self
}
func textViewDidChange(_ textView: UITextView) {
// avoid new lines also at the beginning
textView.text = textView.text.replacingOccurrences(of: "^\n", with: "", options: .regularExpression)
// avoids 4 or more new lines after some text
textView.text = textView.text.replacingOccurrences(of: "\n{4,}", with: "\n\n\n", options: .regularExpression)
}
}