我以编程方式创建了一个UITextView,并添加了如下所示的占位符:
//textView
textView.frame = CGRectMake(viewSize.width * 0.05, contentView.frame.height - viewSize.width * 0.05, viewSize.width - viewSize.width * 0.05 * 2, -viewSize.height * 0.220833)
self.textView.delegate = self
self.textView.text = "Agregue una descripción..."
self.textView.textColor = UIColor.lightGrayColor()
self.textView.autocorrectionType = UITextAutocorrectionType.No
self.textView.layer.cornerRadius = 6
self.view.addSubview(textView)在委托职能方面:
func textViewDidBeginEditing(textView: UITextView) {
if textView.textColor == UIColor.lightGrayColor() {
textView.text = ""
textView.textColor = UIColor.blackColor()
}
}
func textViewDidEndEditing(textView: UITextView) {
if textView.text.isEmpty {
textView.text = "Agregue una descripción..."
textView.textColor = UIColor.lightGrayColor()
}
}我还尝试将字符串文本检查为零:
if textView.text == nil就像这样:
if textView.text == ""没有人检测到空行,即使是零比较也没有在添加和删除一些字符之后检测到文本的缺失。
因此,当用户输入文本时没有问题,当用户删除占位符返回的所有文本时,但是如果您添加一行或更多没有任何文本的行,则对空的比较是不正确的,我需要一种方法来检测我没有文本,而添加的行也没有文本,因为Swift .isEmpty中新引入的没有检测空行,其他的比较也没有。
如何检测字符串中的空行?
发布于 2015-08-19 15:03:45
问问自己,文本是否只由NSCharacterSet whitespaceAndNewlineCharacterSet中的字符组成(或者任何字符构成了头脑中的空虚--也许你想要的是newlineCharacterSet)。最简单的方法是使用它的invertedSet并调用rangeOfCharacterFromSet --如果结果是{NSNotFound, 0} (Swift nil),则本文仅由空格字符组成。
extension String {
var isBlank : Bool {
let s = self
let cset = NSCharacterSet.newlineCharacterSet().invertedSet
let r = s.rangeOfCharacterFromSet(cset)
let ok = s.isEmpty || r == nil
return ok
}
}
"howdy".isBlank // false
"".isBlank // true
"\n\n".isBlank // true发布于 2015-08-19 17:01:59
matt发布的“快速和脏”版本的代码,没有扩展字符串:
func textViewDidEndEditing(textView: UITextView) {
let myAwesomeDescription = textView.text.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
if myAwesomeDescription == "" {
//user did not modify empty box or text only consisted of space/newline characters, reset placeholder text and placeholder textColor
textView.text = "Agregue una descripción..."
textView.textColor = UIColor.lightGrayColor()
} else {
//textView holds a valid string, do stuff
}
}myAwesomeDescription是做什么的?为此,我们参考了一个很好的NSHipster文章:
剥除白空间 NSString -stringByTrimmingCharactersInSet:是一种你应该记住的方法。它通常通过NSCharacterSet +whitespaceCharacterSet或+whitespaceAndNewlineCharacterSet来删除字符串输入的前导空格和尾部空格。 需要注意的是,该方法只对指定集合中的第一个和最后一个连续字符序列进行剥离。
尽管如此,这不仅帮助我们处理具有不必要的前导或后继空格/换行符的字符串,而且还帮助处理“空”--在大多数定义中,这意味着字符串只是空格/换行符。
https://stackoverflow.com/questions/32099014
复制相似问题