2017-12-19 33 views
1

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 코드 :

나는 선 ("\ n을"의) 인덱스에 휴식을 얻을 수 없다, 그래서

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 

: 여기

@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) 
    } 

인쇄 출력 때 UITextView 컨트롤을 사용하지만 리터럴 텍스트를 사용할 때 잘. Swift 4에서 알 수있는 것은 CompoundOffset을 처리하기 위해 수행해야하는 펑키 한 작업입니다. 그게 잘 설명되어 있지 않아서 내 문제를 해결하는 방법을 알아낼 수없고 컨트롤 텍스트가 문자열로 작동하도록 할 수 없습니다. 어떤 도움을 주시면 감사하겠습니다.

+1

첫 번째 게시물 ... 죄송합니다. 그것을 강화했습니다. – David

+0

출력물에서,'UITextView'는 백 슬래쉬와'n'을 포함하고 있습니다. 이것은'\ n "'같은 하나의 개행 문자입니다. – vacawama

+0

텍스트보기에서 타이핑 할 때 실제로 문자 \ 다음에 'n'을 입력하지 마십시오. 새 줄을 입력하려면 키보드의 Enter 키를 누릅니다. – rmaddy

답변

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 값을 강제로 해제해서는 안됩니다.

+0

이것은 효과가 있습니다. 필자는 공통 기능을 가지고 있기 때문에 필자는 필자의 기능에 맞게 대체하고 옮겨야하므로 문자열의 출처와 그 소스가 어떻게 처리하는지 더 불가지론 적이다. 'let string = string.replacingOccurrences (of : "\\ n", "\ n")' – David