관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] 1. UITextField, UITextView에서 알면 좋은 개념 - deleteBackward() 본문

iOS 응용 (swift)

[iOS - swift] 1. UITextField, UITextView에서 알면 좋은 개념 - deleteBackward()

jake-kim 2023. 11. 30. 01:46

1. UITextField, UITextView에서 알면 좋은 개념 - deleteBackward()

2. UITextField, UITextView에서 알면 좋은 개념 - binding (rx.text, editingChnaged, allEditingEvents,  shouldChangeCharactersIn, allEditingEvents)

3. UITextField, UITextView에서 알면 좋은 개념 - NSRange, UITextRange (#utf16)

4. UITextField, UITextView에서 알면 좋은 개념 - prefix, suffix, insert,

deleteBackward() 개념

  • 현재 화면 상의 cursor 위치 앞쪽의 문자를 삭제하는 UITextField혹은 UITextView의 메서드
    • 이 메서드를 모르면 textView에 직접 접근해서, 커서의 위치를 알아내어 그 앞에있는 문자를 삭제하는 번거로움이 존재

https://developer.apple.com/documentation/uikit/uikeyinput/1614572-deletebackward

deleteBackward() 활용

  • 커서 앞에있는 문자를 삭제하고 싶을때 활용이 가능

구현) 버튼이 눌러졌을때 textView.deleteBackward() 호출

deleteButton.addTarget(self, action: #selector(tap), for: .touchUpInside)

@objc func tap() {
    textView.deleteBackward()
}
  • 또 다른 활용) 
    • shouldChangeTextIn에서 특정 문자열 처리 후 textView에 대입해주고 싶은 경우

ex) 느낌표를 입력하면 현재 커서앞의 문자를 삭제하고 "느낌표"라는 문자열을 입력되게 하고싶은 경우

구현) 

  • shouldChangeTextIn 델리게이트에서 deleteBackward() 호출후 insertText를 사용
textView.delegate = self

extension ViewController: UITextViewDelegate {
    func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {
        if text == "!" {
            textView.deleteBackward()
            textView.insertText("느낌표")
            return false
        }
        
        return true
    }
}

 

* 전체 코드: https://github.com/JK0369/ExBackwords

* 참고

- https://developer.apple.com/documentation/uikit/uikeyinput/1614572-deletebackward

Comments