2016-10-03 2 views

ответ

3

shouldChangeTextInRange будет называться до текстовое значение текстового поля изменяется.

Попробуйте поместить свой код в textViewDidChange вместо:

func textViewDidChange(textView: UITextView) { 
    label.text = textView.text 
} 
1

Вы устанавливаете текст текста textView. Попробуйте:

override func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool { 

     label.text = text 
     return true; 
} 

как этот метод вызывается до того, как текст textView будет распространен.

-1

Вы можете использовать NSStringreplacingOccurrences(of:with:), чтобы вводить текст, как этот

Swift2

func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool { 
    let originText = textView.text as NSString 
    let replacingText = originText.stringByReplacingCharactersInRange(range, withString: text) 

    label.text = replacingText 
    return true 
} 

Swift3

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool { 
    let originText = textView.text as NSString 
    let replacingText = originText.replacingCharacters(in: range, with: text) 

    label.text = replacingText 
    return true 
} 
Смежные вопросы