번호 : 048, 작성일자: 2024-12-09

2024.12.02 ~ 2024.12.08

⌨️ TextField 복사-붙여넣기 관련 정리


iOS 앱에서 사용자에게 문자열을 입력받기 위해 UITextField를 사용할 수 있습니다.

사용자는 UITextField에 직접 키보드로 입력하지 않고 붙여넣기를 할 수 있습니다.

이 때 동작하는 로직 순서에 대해서 알아봤습니다.

붙여넣기시 로직 순서

  1. 붙여넣기를 진행한 경우 가장 먼저 UITextFieldDelegate의 메서드인 shouldChangeCharactersIn가 호출됩니다.
    • 해당 부분에서 정규식검사를 통해 입력받지 않을 문자가 존재하는 경우 붙여넣기가 안되도록 처리할 수 있습니다.
  2. editingChanged 에서 입력받은 텍스트를 전달받습니다.
    • 입력받은 텍스트를 그대로 표시하거나 가공하여 표시할 수 있습니다.

붙여넣기 방지 방법

class CustomTextField: UITextField {

    open override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
        if action == #selector(UIResponderStandardEditActions.paste(_:)) {
            return false
        }

        return super.canPerformAction(action, withSender: sender)
    }
    
	  ...

UIResponderStandardEditActions 프로토콜을 통해 각 종 액션을 방지할 수 있습니다.

🙋🏻‍♂️ 기타 사항


  1. Cursor AI로 iOS프로젝트를 Flutter프로젝트로 변환하거나 특정 아키텍처패턴으로 리팩토링 요구등을 시도해보았는데 일단 느낀점은 UIKit프레임워크보다는 SwiftUI프레임워크 코드를 이해를 더 잘 하는 것 같고, 단순한 SnapKit, Then 라이브러리를 제거하고 각 기본방식으로 리팩토링등은 수월하지만 아키텍처패턴으로 리팩토링은 아직 사용할만한 수준은 아닌 것 같다.
  2. Medium 블로그로 이전하면서 글 작성방법 단축키등을 살펴봤다.
  3. ReactNative가 25년 3월 이후로 Code Push가 종료된다는데 이제는 Flutter도 ShoreBird를 제공하니 각각 유료서비스를 사용해야하는 부분에서 Flutter가 좀 더 우위를 가져갈 것 같은 느낌이다..