Swift

[Swift] UIScrollView 내 UITextView 의 Cursor 로 focus scroll 하는 방법

웰코발 2022. 11. 17. 20:05

UIScrollView 안에 UITextView를 넣고 textView에 포커싱을 올리면

키보드에 가려져 스크롤을 해야하는 번거로움이 있다.

그럴경우 아래와 같은 코드를 사용해보자.


// UITextViewDelegate 내 override 함수에 활용

func textViewDidChange(_ textView: UITextView) {

    let deadlineTime = DispatchTime.now() + .milliseconds(100)

    DispatchQueue.main.asyncAfter(deadline: deadlineTime) { 
        if let cursorPosition = textView.selectedTextRange?.end {

            let caretPositionRect = textView.caretRect(for: cursorPosition)
            print(caretPositionRect, "caret")
            let pointsuperview = textView.convert(caretPositionRect, to: self.scrollView)
            self.scrollView.scrollRectToVisible(pointsuperview, animated: false)
        }
    }
    
    
}

textview의 마지막 글자의 커서 위치를 얻어 해당 위치로 스크롤 시키는 방법이다.