UITextView
の.text値を文字列に変換する際に問題が発生し、インデックスを作成して文字列を "\ n"に吐き出すことができません。私は引用符で文字列を渡すと、それは動作しますが、私はそれが「\ n」はここでUITextViewの値が文字列に変換されない
に分割拒否する.textの値を使用した場合、私の関数である。ここで
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
、私はラインが(の: "\ nを")インデックスに分割することができませんUITextViewコントロールを使用していますが、リテラルテキストを使用するときれいです。私が知ることができるのは、Swift 4には、CompoundOffsetを扱うために行わなければならない、何か不思議なことがあります。これは文書化されていないので、問題の解決方法を理解できず、コントロールテキストを文字列として動作させることができません。どんな助けもありがとう。
最初の投稿...申し訳ありません。それを固めた。 – David
あなたの出力から、 'UITextView'にバックスラッシュとそれに続く' n'が含まれているように見えます。これは '\ n" 'と同じではありません。これは改行文字です。 – vacawama
実際には、テキストビューで入力するときに文字\の後に 'n'をタイプしないでください。改行を入力するには、キーボードのEnterキーをタップします。 – rmaddy