티스토리 뷰
728x90
반응형
UITextView placeholder 효과 구현하기
UITextFieldDelegate
TextField 는 placehoder 기능을 지원하지만 여러줄을 입력받는 TextView 는 그렇지 않다. 그래서 TextViewDelegate 를 통해서 커스텀해주어야 한다.
private func setTextViewPlaceholder() {
if textView.text == "" {
textView.text = "메모"
textView.textColor = UIColor.lightGray
} else if textView.text == "메모"{
textView.text = ""
textView.textColor = UIColor.black
}
}
...
extension ScheduleListTopCell: UITextViewDelegate {
//textView 편집 시작
func textViewDidBeginEditing(_ textView: UITextView) {
setTextViewPlaceholder()
}
//textView 편집 끝
func textViewDidEndEditing(_ textView: UITextView) {
if textView.text == "" {
setTextViewPlaceholder()
}
}
//textView 특정 text 가 대체될 때 호출
//개행문자 시 textView 의 활성화를 포기하는 요청을 보내서 키보드를 내림
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
if text == "\n" {
textView.resignFirstResponder()
}
return true
}
}
하지만 TextView 의 기본여백때문에 높이와 시작점이 다른 것을 볼 수 있다.
원인
UITextView 에는 textContainerInset 속성이 있어서 여백을 관리할 수 있다. 개발자문서에서 확인해보니 상단과 왼쪽에 8 이 주어져있다.
해결
아래의 코드로 여백을 0으로 설정해주었다.
textView.textContainerInset = .zero
//textView.textContainerInset = .init(top: 8, left: -5, bottom: 0, right: 0)
출처
728x90
반응형
'iOS' 카테고리의 다른 글
iOS) UITalbeViewCell SwipeAction (0) | 2021.07.21 |
---|---|
iOS) UITalbeView Separator 없애기 (0) | 2021.07.20 |
iOS) section 에 따라서 커스텀 셀 설정 (0) | 2021.07.20 |
iOS) UITextField 가 비어있다면 UIButton 비활성화 시키기 (0) | 2021.07.20 |
iOS) UIButton 눌러도 반응하지 않도록 하기 (0) | 2021.07.20 |
댓글
TAG
- async/await
- Swift
- Widget
- urlsession
- WidgetKit
- containerBackground
- configurable widget
- github
- OpenSourceLibrary
- Notification
- WWDC22
- IOS
- APNS
- 2022 KAKAO TECH INTERNSHIP
- MVVM
- SwiftUI
- Algorithm
- RxCocoa
- watchOS
- CloneCoding
- WWDC
- Firebase
- Protocol
- Objective-C
- rxswift
- YPImagePicker
- projectsetting
- 서버통신
- UserDefaults
- MOYA
최근에 올라온 글
최근에 달린 댓글
글 보관함
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
링크
- Total
- Today
- Yesterday