У меня есть ViewController
с UITextView
и элементом кнопки «Отправить» на панели навигации, который отправляет текст в textView. Поскольку UITextView не поддерживает текст-заполнитель, такой как UITextField, я обрабатываю его самостоятельно с помощью следующего кода, который находится в методе UITextViewDelegate
, shouldChangeTextInRange
.
Примечание. Следующий код, который я написал до сих пор, также активирует кнопку «Отправить» для пробелов/символов новой строки. Но вот с чем мне нужна помощь:
Как я могу отключить кнопку "Отправить", если textView содержит только пробелы или символы новой строки, но включить ее в противном случае, при этом также правильно установив/удалив текст-заполнитель?
func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
// Combine the postTextView text and the replacement text to
// create the updated text string
let currentText : NSString = textView.text
let updatedText = currentText.stringByReplacingCharactersInRange(range, withString:text)
// If the updated textView text will be empty, disable the send button,
// set the placeholder text and color, and set the cursor to the beginning of the text view
if updatedText.isEmpty {
sendBarButton.enabled = false
textView.text = "Write something..."
textView.textColor = UIColor.lightGrayColor()
textView.selectedTextRange = textView.textRangeFromPosition(textView.beginningOfDocument, toPosition: textView.beginningOfDocument)
return false
}
// If the textView's placeholder is showing (i.e.: the textColor is light gray for placeholder text)
// and the length of the replacement string is greater than 0,
// clear the text view and set its color to black to prepare for the user to enter text
else if (textView.textColor == UIColor.lightGrayColor() && !(text.isEmpty)) {
sendBarButton.enabled = true
textView.text = nil
textView.textColor = UIColor.blackColor()
}
return true
}
ОБНОВЛЕНИЕ: я понимаю, что следующий код может использоваться для обрезки/распознавания пробелов и символов новой строки, но не уверен, как применить его здесь в этом случае: stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()).isEmpty
Спасибо за вашу помощь.