2016-02-27 83 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