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

Это звучит, как вам нужно NSString «s paragraphRangeForRange: метод:

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

великолепно звучит, позвольте мне попробовать :) – Elida

+1

работает как шарм! Спасибо приятель :) – Elida

 Смежные вопросы

  • Нет связанных вопросов^_^