首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Swift中检测UITextView中的空行和文本缺失

在Swift中检测UITextView中的空行和文本缺失
EN

Stack Overflow用户
提问于 2015-08-19 14:56:36
回答 2查看 3.2K关注 0票数 1

我以编程方式创建了一个UITextView,并添加了如下所示的占位符:

代码语言:javascript
复制
    //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)

在委托职能方面:

代码语言:javascript
复制
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()
    }
}

我还尝试将字符串文本检查为零:

代码语言:javascript
复制
if textView.text == nil

就像这样:

代码语言:javascript
复制
if textView.text == ""

没有人检测到空行,即使是零比较也没有在添加和删除一些字符之后检测到文本的缺失。

因此,当用户输入文本时没有问题,当用户删除占位符返回的所有文本时,但是如果您添加一行或更多没有任何文本的行,则对空的比较是不正确的,我需要一种方法来检测我没有文本,而添加的行也没有文本,因为Swift .isEmpty中新引入的没有检测空行,其他的比较也没有。

如何检测字符串中的空行?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-19 15:03:45

问问自己,文本是否只由NSCharacterSet whitespaceAndNewlineCharacterSet中的字符组成(或者任何字符构成了头脑中的空虚--也许你想要的是newlineCharacterSet)。最简单的方法是使用它的invertedSet并调用rangeOfCharacterFromSet --如果结果是{NSNotFound, 0} (Swift nil),则本文仅由空格字符组成。

代码语言:javascript
复制
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
票数 7
EN

Stack Overflow用户

发布于 2015-08-19 17:01:59

matt发布的“快速和脏”版本的代码,没有扩展字符串:

代码语言:javascript
复制
func textViewDidEndEditing(textView: UITextView) {

    let myAwesomeDescription = textView.text.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSe‌​t())

    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来删除字符串输入的前导空格和尾部空格。 需要注意的是,该方法只对指定集合中的第一个和最后一个连续字符序列进行剥离。

尽管如此,这不仅帮助我们处理具有不必要的前导或后继空格/换行符的字符串,而且还帮助处理“空”--在大多数定义中,这意味着字符串只是空格/换行符。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32099014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档