2016-02-27 80 views
2

我想檢測當前段落,這是到目前爲止我的代碼,但它不工作這麼好。比方說我有3段,當光標在他們之間時,它選擇下一個,這是不正確的。有一個更好的方法嗎?在UITextView中獲取當前段落?

有了這個代碼,我想檢測當前段落,然後更改段落的字體,然後繼續使用該字體書寫。

func textViewDidChangeSelection(textView: UITextView) 
{ 

    // print("selected") 
    //stylesDefaults() 
    var arr = [String]() 

    composeTextView.text.enumerateSubstringsInRange(Range(start: composeTextView.text.startIndex, end: composeTextView.text.endIndex), options: NSStringEnumerationOptions.ByParagraphs, 
     { (substring, substringRange, enclosingRange, bool) ->() in arr.append(substring!) 
    }) 

    if(composeTextView.text.characters.count != 0) 
    { 
     self.titleTextField.text = arr[0] 
    } 

    let currentRange : NSRange = composeTextView.selectedRange 
    var charCounter : Int = 0 
    var found : Bool = false 
    for (var i = 0; i < arr.count; i++) 
    { 
     charCounter = charCounter + arr[i].characters.count 
     if found == false 
     { 
      if(charCounter > currentRange.location) 
      { 
       print(arr[i]) 
       found = true 
      } 
     } 

    } 

} 

回答

1

這聽起來像你需要NSStringparagraphRangeForRange:方法:

let composeText = composeTextView.text as NSString 
let paragraphRange = composeText.paragraphRangeForRange(composeTextView.selectedRange) 
print(composeText.substringWithRange(paragraphRange)) 
+0

聲音很大,讓我試試:) – Elida

+1

作品般的魅力!多謝,夥計 :) – Elida