동일한 조건 분기를 재사용하려면 함수로 추출해 코드 중복을 줄일 수 있습니다.
extension FeedViewController: UITextViewDelegate {
func textViewDidBeginEditing(_ textView: UITextView) {
if textView == feedView.calledTitleTextView() {
if feedView.calledTitleTextView().textColor == .secondaryLabel {
feedView.calledTitleTextView().text = ""
feedView.calledTitleTextView().textColor = .label
}
}
if textView == feedView.calledContentTextView() {
if feedView.calledContentTextView().textColor == .secondaryLabel {
feedView.calledContentTextView().text = ""
feedView.calledContentTextView().textColor = .label
}
}
}
func textViewDidEndEditing(_ textView: UITextView) {
if textView == feedView.calledTitleTextView() {
if feedView.calledTitleTextView().text.isEmpty {
feedView.calledTitleTextView().text = "제목 쓰기 어렵다면 이모지로 표현해주세요 😉 "
feedView.calledTitleTextView().textColor = .secondaryLabel
}
}
if textView == feedView.calledContentTextView() {
if feedView.calledContentTextView().text.isEmpty {
feedView.calledContentTextView().text = "오늘 하루 무슨 일이 있으셨나요? 당신의 하루를 들려주세요 🥰"
feedView.calledContentTextView().textColor = .secondaryLabel
}
}
}
func textViewDidChange(_ textView: UITextView) {
let maxTitleLength: Int = 20
if textView == feedView.calledTitleTextView() {
if feedView.calledTitleTextView().text.count > maxTitleLength {
print("글자 수가 너무 길어요")
}
}
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
view.endEditing(true)
}
}
위의 코드에서 보면 반복적으로 사용되는 부분이 있습니다.
이를 함수로 처리하여 코드의 가독성을 높입니다.
func resetPlaceholder(for textView: UITextView, placeholder: String) {
if textView.text.isEmpty {
textView.text = placeholder
textView.textColor = .secondaryLabel
}
}
func clearPlaceholder(for textView: UITextView) {
if textView.textColor == .secondaryLabel {
textView.text = ""
textView.textColor = .label
}
}
func textViewDidBeginEditing(_ textView: UITextView) {
if textView == feedView.calledTitleTextView() {
clearPlaceholder(for: textView)
} else if textView == feedView.calledContentTextView() {
clearPlaceholder(for: textView)
}
}
func textViewDidEndEditing(_ textView: UITextView) {
if textView == feedView.calledTitleTextView() {
resetPlaceholder(for: textView, placeholder: "제목 쓰기 어렵다면 이모지로 표현해주세요 😉 ")
} else if textView == feedView.calledContentTextView() {
resetPlaceholder(for: textView, placeholder: "오늘 하루 무슨 일이 있으셨나요? 당신의 하루를 들려주세요 🥰")
}
}
'UIKIT' 카테고리의 다른 글
PHPickerViewController, PHPickerConfiguration를 통해 이미지를 선택하는 방법 (0) | 2024.11.23 |
---|---|
TextView에서 줄 수 제한 (0) | 2024.11.22 |
UINavigationBarAppearance() 에 대해서 (0) | 2024.11.21 |
layoutSubviews 반복 호출 방지 (0) | 2024.11.20 |
델리게이트 패턴으로 화면 전환하기 (2) | 2024.11.17 |