UITextView值不转换为字符串

时间:2017-12-19 19:30:32

标签: ios swift uitextview

我无法从UITextView获取.text值以转换为字符串,因此我可以将其编入索引并在“\ n”上吐出字符串。如果我在引号中传递一个字符串它可以工作,但如果我使用.text值它拒绝拆分“\ n”

这是我的功能:

func formatLabel(string: String, title_color: UIColor, title_font_size: CGFloat, title_font_weight: UIFont.Weight, subtitle_color: UIColor, subtitle_font_size: CGFloat) -> NSMutableAttributedString {
    //getting the range to separate the button title strings
    let index = string.index(of: "\n") ?? string.endIndex
    let substring1 = String(string[..<index])
    let substring2 = String(string[index...])

    print("string:", string)
    print("index: ",index)
    print("line 1", substring1)
    print("line 2", substring2)

}

这是我的ViewController代码:

    @IBAction func btnUpdate(_ sender: Any) {
        txtOutput.attributedText = formatLabel(string: txtInput.text!, title_color: UIColor.gray, title_font_size: 17, title_font_weight: UIFont.Weight.bold, subtitle_color: UIColor.lightGray, subtitle_font_size: 13)
        txtOutput2.attributedText = formatLabel(string: "Title\nSub Title", title_color: UIColor.gray, title_font_size: 17, title_font_weight: UIFont.Weight.bold, subtitle_color: UIColor.lightGray, subtitle_font_size: 13)
    }

这是打印输出:

string: Title\nSub Title  
index:  Index(_compoundOffset: 64, _cache:    
Swift.String.Index._Cache.utf16)  
line 1 Title\nSub Title  
line 2  
string: Title   
Sub Title  
index:  Index(_compoundOffset: 20, _cache:   Swift.String.Index._Cache.character(1))   
line 1 Title  
line 2  
Sub Title   

因此,在使用UITextView控件时,我无法在索引(of:“\ n”)上打破行,但在使用文字文本时就好了。我所能想到的只是在Swift 4中,为了处理CompoundOffset,必须要做一些时髦的事情。这个文档很难记录,因此无法弄清楚如何解决我的问题并让控制文本表现为字符串。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

UITextView组件不会自动将用户输入的“\ n”转换为返回字符。

您可以使用:

txtOutput.attributedText = formatLabel(string: txtInput.text!.replacingOccurrences(of: "\\n", with: "\n"), title_color: UIColor.gray, title_font_size: 17, title_font_weight: UIFont.Weight.bold, subtitle_color: UIColor.lightGray, subtitle_font_size: 13)

这将用适当的返回字符替换“\ n”。

P.S。但是,您不应强制解包txtInput.text值。