관리 메뉴

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

[iOS - swift] becomeFirstResponder 타이밍, UILongPressGestureRecognizer, 키보드 본문

iOS 기본 (swift)

[iOS - swift] becomeFirstResponder 타이밍, UILongPressGestureRecognizer, 키보드

jake-kim 2021. 1. 6. 23:59

becomeFirstResponder와 키보드 상승 타이밍

  • UITextfield창을 탭한 경우
  • 텍스트 필드 간에 short press를 하면 resignFirstResponder가 되어도 키보드가 등장한채로 유지
    : A becomeFirstResponder -> 키보드 상승 -> A resignFirstResponder -> B becomeFirstResponder (키보드 유지)

  • 텍스트 필드 간에 ong press를 하면 resignFirstResponder가 될 경우 키보드가 사라졌다가 재등장
    : A becomeFirstResponder -> 키보드 상승 ->  A resignFirstResponder -> 키보드 하강 -> B becomeFirstResponder -> 키보드 상승

 

UILongPressGestureRecognizer 제스처 disable방법

  • 아래 코드 추가
extension UITextField {
    public override func addGestureRecognizer(_ gestureRecognizer: UIGestureRecognizer) {
        if gestureRecognizer.isKind(of: UILongPressGestureRecognizer.self) {
            gestureRecognizer.isEnabled = false
        }

        return super.addGestureRecognizer(gestureRecognizer)
    }

    public override func becomeFirstResponder() -> Bool {
        for recognizer in self.gestureRecognizers ?? [] where recognizer is UILongPressGestureRecognizer {
            recognizer.isEnabled = false
        }

        return super.becomeFirstResponder()
    }
}
Comments