- This topic has 5개 답변, 2명 참여, and was last updated 4 years, 2 months 전에 by 야곰.
-
글쓴이글
-
-
뚭니참가자
- 글작성 : 9
- 답글작성 : 17
안녕하세요, 오랜만에 QnA 게시판에 질문을 남기는 뚭니입니다.
UITextView 관련하여 난항을 겪고 있어 조언을 구하고 싶어 글을 작성합니다.
먼저, 제가 구현하고자 하는 액션은 다음 영상과 같습니다.
UITextView에 글을 작성할 때마다 줄바꿈을 하여도
cursor가 항상 키보드 위에 위치하도록 대응하면서 height가 늘어나는 걸 볼 수 있는데요.
현재 제가 구현한 모습은
많은 글을 작성하면 키보드에 cursor가 가려져 글을 수정하기 불편한 것을 볼 수 있습니다.
구글링은 textview, scroll, offset, cursor, position 과 같은 키워드로 검색을 해보았는데요,
그 중 찾게된 stack overflow 에서 한 분께서 알려주신 방법 중
private func scrollToCursorPositionIfBelowKeyboard() { print("keyboardHeight", keyboardHeight) let caret = textView.caretRect(for: textView.selectedTextRange!.start) let keyboardTopBorder = textView.bounds.size.height - keyboardHeight if caret.origin.y < keyboardTopBorder { textView.scrollRectToVisible(caret, animated: true) } }위와 같은 방법, 또는 키보드 height와 상관없이 커서 위치로 scroll만 하는 경우 두가지 방법을 시도해보았습니다.
private func scrollToCursorPosition() { let caret = textView.caretRectForPosition(textView.selectedTextRange!.start) textView.scrollRectToVisible(caret, animated: true) }참고로 keyboard 의 높이는 UIResponder.keyboardWillShowNotification을 이용하여 키보드가 보여질 때 값을 얻어오도록 하였고 keyboardHeight이란 변수로 명명하여 저장하고 출력해보았을 때 print는 잘 찍히는 것을 확인했습니다.
참고한 stack overflow 링크
How to scroll to current cursor position in UITextView?
UITextView how to keep cursor above keyboard
혹시 어떻게 검색하면 좋은지 키워드를 추천해주시거나
방법을 조언해주신다면 무척 감사할 것 같습니다.
좋은 하루 되세요!
2020-09-09 오전 5:18 #29447 -
-
뚭니참가자
- 글작성 : 9
- 답글작성 : 17
바쁘신 와중에 답변 남겨주셔서 감사드립니다!
혹시, 한가지 질문을 더 해도 될까요?
현재는 입력한 텍스트의 높이에 따라서 텍스트뷰 높이가 동적으로 증가하도록 구현해놓은 상태인데요.
(텍스트 뷰의 Height 를 약한 우선순위로 설정하고, 텍스트 뷰의 높이에 따라 셀의 높이가 변하도록 테이블 뷰를 업데이트 하였습니다.)
키보드가 올라온 만큼 오토레이아웃으로 제약을 조절하더라도 텍스트 뷰가 아래로 계속 길어지면 가려지지 않을까 하여 고민입니다.
텍스트 뷰의 크기 자체를 조절해야한다고 조언 해주셨는데
크기를 고정으로 하고 오토레이아웃으로 제약을 조절해보라는 말씀이실까요?
고민이 많던 중에 한줄기 빛과 같은 답변 😭 남겨주셔서 감사드립니다.
2020-09-09 오후 2:29 #29467-
-
뚭니참가자
- 글작성 : 9
- 답글작성 : 17
아닙니다! 사고를 확장시켜주셔서 감사합니다.
해당 부분은 textView의 height를 동적으로 증가하면서,
동시에 키보드 위로 유지시키려다 보니 어려움이 있었다고 생각합니다.
조언해주신 방법과 테이블뷰 스크롤을 bottom으로 내리는 방법 등 여타 방법을 시도해보다가
결국… height를 고정시켰습니다.
키보드 위로 올라올 만큼 짧게 height를 고정 시켜 자동으로 스크롤이 발생하게 했습니다..
줄바꿈을 할 때마다 동적으로 높이를 증가하게 하니까
계속 키보드 밑으로 내려가면서 보이지가 않네요 ㅠㅠ
2020-09-09 오후 11:04 #29519
-
-
-
-
글쓴이글
- 답변은 로그인 후 가능합니다.