textfield delegate 관련 질문 :)

1 답변 글타래를 보이고 있습니다
  • 글쓴이
    • 모다피
      참가자
      • 글작성 : 7
      • 답글작성 : 1
      430 포인트

      안녕하세요 모다피에요 !

      swift로 textfield delegate을 구현해서 테스트해보다가 동작이 잘 안되는 부분이 있어서 질문 남겨요.

       

      texfield에 clearbutton mode로 .whileEditing을 기본으로 넣었고 뷰 부모에 scrollview를 넣었는데요.

      texfield x 버튼을 눌렀을때  textfielddelegate가 textFieldShouldEndEditing-> textFieldDidEndEditing -> textFieldShouldClear

      이 순서로 타다보니까 scrollview 안에서 clearbutton mode에서 x버튼이 원활히 동작하지 않고 스킵될 때가 있더라고요.

      혹시 개발자 분 가운데도 이런 경우가 있으셨던 분 계신가요? 아니면 제가 뭔가 실수한건가 하고 올려봅니다.

      참고: textFieldShouldEndEditing, textFieldDidEndEditing에는 뷰랑 키보드 높이를 계속해서 텍스트필드와 키보드 위치에 따라 뷰를

      상단으로 조정해주는 함수를 구현했습니다.

       

      그럼 감사합니다~ 좋은 주말보내세요들~!

      • 이 게시글은 모다피에 의해 2 years, 1 month 전에 수정됐습니다.
    • 야곰
      키 마스터
      • 글작성 : 37
      • 답글작성 : 552
      19,990 포인트

      X 버튼을 눌렀을 때 세 메서드를 거쳐 가는 것이 어떤 문제가 되는지 잘 이해가 가지 않습니다.
      그것 때문에 X 버튼이 원활히 동작하지 않는 것은 아닌 것 같고요, 스크롤뷰의 스크롤 액션 때문에 겹치는 것 같습니다.
      아래 참고가 눈에 띄네요. 두 곳에 위치에 따라 움직이는 코드를 넣었기 때문에 스크롤뷰에서 조금의 움직임만 가해져도 저 두 곳의 코드가 호출되겠네요.
      왜 두 메서드에 그런 코드가 들어갈 필요가 있는지 궁금합니다. 다른 곳에 넣을 수는 없는걸까요?
      만약 꼭 필요한 것이라면 iOS의 Responder chain에 대해 좀 더 공부해보면 도움이 될 것 같기도 하고요, scrollView의 delegate 메서드를 조절하면 좀 달라질지도 모르겠네요
      scrollview의 delegate 메서드 중 스크롤 할지말지 결정하는 메서드가 있다면, 사용자의 현재 터치 위치가 필드 안쪽이라면 움직이지 않도록 하면 위의 두 메서드가 호출될 일은 없겠네요.
      좀 더 좋은 방법이 있을 것 같은데 지금 당장 생각나는 해결책은 그것밖에 생각이 안나는군요.. ‘ㅁ’

      avatar
      • 모다피
        참가자
        • 글작성 : 7
        • 답글작성 : 1
        430 포인트

        아 키보드가 스크롤뷰에서 textfield를 가리는 문제가 있어서 textFieldShouldBeginEditing, textFieldShouldEndEditing 메소드일때 높이 계산해서 올려주는 메소드 구현했고, textFieldShouldEndEditing, textFieldDidEndEditing일때 내려주는 메소드 구현했는데요.

        다르게 한번 구현해서 해봐야겠네요 !

        • 야곰
          키 마스터
          • 글작성 : 37
          • 답글작성 : 552
          19,990 포인트

          네! iOS Keyboard notification 찾아보세요 🙂

1 답변 글타래를 보이고 있습니다
  • 답변은 로그인 후 가능합니다.

logo landscape small

사업자번호 : 260-27-00477
통신판매업 신고번호 : 제 2020-충북청주-0663 호
고객센터 : 카카오톡채널 @yagom