Ich habe eine ViewController
mit einem UITextView
und einem "Send" -Bar-Button-Element in der Navigationsleiste, die den Text in der textView übermittelt. Da UITextView keinen Platzhaltertext wie das UITextField unterstützt, handle ich selbst mit dem folgenden Code, der sich in der UITextViewDelegate
-Methode, shouldChangeTextInRange
, befindet.Swift: Deaktivieren Sie bar-Taste für Whitespace/Newline-only Text in UITextView mit Platzhaltertext
Hinweis: Der folgende Code, den ich bisher geschrieben habe, aktiviert die Schaltfläche Senden für Whitespace-/Newline-Zeichen. Aber das ist, was mit Ich brauche Hilfe:
Wie kann ich auf die Schaltfläche Senden deaktivieren, wenn der Textview nur Leerzeichen oder Zeilenumbrüche enthält, aber ermöglichen es sonst während auch/Einstellen der Platzhalter-Text Clearing angemessen?
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
}
UPDATE: Ich verstehe der folgende Code verwendet werden kann, Leerzeichen und Zeilenumbrüche zu trimmen/erkennen, aber nicht sicher, wie es hier in diesem Fall anzuwenden: stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()).isEmpty
Vielen Dank für Ihre Hilfe.
Dank Rajan, aber ich glaube, das ist immer noch die Bar-Taste Leerzeichen ermöglicht . – DiligentDev
Dafür müssen wir etwas Logik schreiben, trimmen Sie einfach Ihre Zeichen für Leerzeichen. Ich werde den Code in einem Augenblick aktualisieren –
Danke. Ja, ich kann die Methode 'stringByTrimmingCharactersInSet (NSCharacterSet.whitespaceAndNewlineCharacterSet())' verwenden, um die Whitespace- und Newline-Zeichen zu trimmen, aber ich muss die Sendebar-Schaltfläche für diese Zeichen deaktivieren, bis ein anderes Zeichen eingegeben wird. – DiligentDev