Detect moment when newline starts in UITextView

后端 未结 8 856
甜味超标
甜味超标 2020-12-08 16:23

I try to detect when carriage goes at new line in UITextView. I can detect it by comparison total later width with UITextView width:

CGSize size = [textView.         


        
相关标签:
8条回答
  • 2020-12-08 17:13

    answer of @n00bProgrammer in Swift-4 with more precise line break detection.

    @n00bProgrammer answer is perfect except one thing it reacts differently when the user starts typing in a first line, it presents that Started New Line too.
    Overcoming issue, here is the refined code

        var previousRect = CGRect.zero
        func textViewDidChange(_ textView: UITextView) {
            let pos = textView.endOfDocument
            let currentRect = textView.caretRect(for: pos)
            self.previousRect = self.previousRect.origin.y == 0.0 ? currentRect : self.previousRect
            if currentRect.origin.y > self.previousRect.origin.y {
                //new line reached, write your code
                print("Started New Line")
            }
            self.previousRect = currentRect
        }
    
    0 讨论(0)
  • 2020-12-08 17:16

    For Swift use this

    previousRect = CGRectZero
    
     func textViewDidChange(textView: UITextView) {
    
            var pos = textView.endOfDocument
            var currentRect = textView.caretRectForPosition(pos)
            if(currentRect.origin.y > previousRect?.origin.y){
                //new line reached, write your code
            }
            previousRect = currentRect
    
        }
    
    0 讨论(0)
提交回复
热议问题