Вы должны хранить значения bool вместо того, чтобы возвращать их, объединять их с &&
и возвращать его.
let existingLines = textView.text.components(separatedBy: CharacterSet.newlines)
let newLines = text.components(separatedBy: CharacterSet.newlines)
let linesAfterChange = existingLines.count + newLines.count - 1
let linesCheck = linesAfterChange <= textView.textContainer.maximumNumberOfLines
let newText = (textView.text as NSString).replacingCharacters(in: range, with: text)
let characterCountCheck = newText.utf16.count < 140
return linesCheck && characterCountCheck
Sidenote: Избегайте использования NSString
в Swift.Вы можете сделать то же самое с String
.
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
if let textViewString = textView.text, let range = Range(range, in: textViewString) {
let newString = textViewString.replacingCharacters(in: range, with: text)
}
return condition
}