MKMapView를 사용한 addAnnotation 및 LongPressRecognizer 관련 질문

태그: 

10 답변 글타래를 보이고 있습니다
  • 글쓴이
    • 다훈 이
      참가자
      • 글작성 : 1
      • 답글작성 : 5

      git : https://github.com/dahun-lee-daji/myFavoriteRestaurant

      Ios 개발자를 목표로 프로젝트 진행중인 비 전공자입니다.

      기본적인 문법 학습 후 프로젝트를 진행하며 혼자 이해하거나 찾아서 학습하기 어려운 부분에 대하여 질문 드리려합니다.

      현재 진행중인 프로젝트는 나의 맛집 어플리케이션입니다. 목표는 Product 레벨까지입니다.

       

      문제가 되는 부분은, ViewController 에서의 addAnnotation 부분입니다.

      1. 해당 기능 수행 시, appdelegate부분에서 crash가 발생합니다. 해당 문제는 MKMapViewDelegate 관련해서 발생하는 것으로 생각 중인데 올바른 학습 방향 혹은, 잘못된 점을 지적해 주시길 바랍니다.
      2. 의문점은 MKMapView 관련 function 은 잘 작동하는데 addAnnotation에만 문제가 발생하는 것이 잘 이해되지 않습니다 ㅜㅜ

      3. 현재는 addAnnotation을 보고있는 mapView의 centerCoordinate를 얻어서 기능 구현을 하려 하고있습니다. 차후 이것을 longPressGesture를 통해서 구현하고자 하는데, 공식 문서에서 recognizer에서는 UITouch와 Event관련 내용이 없는 관계로  

      var taps = UITapGestureRecognizer(target: self, action: Selector(“handleTapGesture:”))

      self.redView.addGestureRecognizer(taps)

      위와 같은 방법으로 구현할까 고민중입니다. 맞는 방향으로의 조언 부탁드립니다.

       

      읽어주셔서 감사드립니다. 

    • 야곰
      키 마스터
      • 글작성 : 37
      • 답글작성 : 580

      안녕하세요 @googleuser143 다훈님,

      제가 아직 본문의 글을 다 읽지않아 본문의 질문과는 무관한 답변이라 죄송합니다만, 궁금한 것이 있어서요.
      글 올리기 버튼을 한 번만 클릭하였는데 중복 게시글이 생성된 것인가요?
      반복으로 클릭했다기엔 게시글의 수가 너무 많은것 같아서요.
      사이트의 오류라면 수정해야 해서요.

      답변 주시면 감사하겠습니다 🙂

    • 다훈 이
      참가자
      • 글작성 : 1
      • 답글작성 : 5

      와 저도 너무 놀랐습니다.

      얼굴이 다 빨개졌네요;;;

      bad gate 오류가 발생해서 반복하여 클릭하였습니다.

       

      해당 게시물 삭제처리하겠습니다. 

      죄송합니다.

    • 야곰
      키 마스터
      • 글작성 : 37
      • 답글작성 : 580

      아닙니다. 사이트가 부족해서 그런걸요… 죄송합니다.
      오류가 났을 때는, 어떤 코드의 어떤 라인에서 어떤 오류메시지와 함께 오류가 나는지를 명확히 알아야 다른 분들도 도움을 주실 수 있을것 같습니다.
      그리고 더 좋은 방향에 대해 궁금해 하셔서 질문과 무관한 말씀을 드리자면 아무리 연습코드라 할지라도 변수, 메서드, 상수 이름을 허투로 짓지마세요. 연습코드가 진짜 코드가 되는겁니다. 버릇은 쉽게 고칠수 없어요. 연습을 실전처럼…! temp1, temp2와 같은 이름은 연습에서도 사용하면 안됩니다.
      ‘연습인데 뭐 어때’라는 마음가짐으로는 그 연습으로 발전을 이뤄내기 어렵습니다.

      • 이 답변은 야곰에 의해 3 years, 5 months 전에 수정됐습니다.
    • 다훈 이
      참가자
      • 글작성 : 1
      • 답글작성 : 5

      피드백 주셔서 감사합니다.

      해당과 같은 무성의한 변수명은 차후로도 주의하도록 하겠습니다.

      피드백 주신 사항 업데이트 하겠습니다.

      PersonalHiddenGem/ViewController.swift의 Line42를 확인 부탁드립니다.

       

      많은 Ref에서 addAnnotation의 input으로 MKPointAnnotation()를 사용하고 있는 것을 확인했습니다.

      다만 MKMapView.addAnnotation이 input으로 MKAnnotation을 사용하는 것을 알 고 있지만, 많은 Ref에서 본디 위와 같이 사용한다고 글이 작성되어 있어서 답습하고있습니다.

      위와 같이 진행하였을 때 unrecognized selector sent to instance 오류가 발생합니다.

      해당 오류의 발생이 리스너 함수를 체크해야 한다는 것을 확인했습니다. 다만, 제 실력부족으로 해당 부분이 왜 이런 오류가 발생하는지 명확히 모르고있습니다.

       

      조언 부탁드립니다.

      감사합니다.

    • 야곰
      키 마스터
      • 글작성 : 37
      • 답글작성 : 580

      unrecognized selector sent to instance
      오류옆에 더 힌트가 있습니다.
      인스턴스는 어떤 인스턴스이고, 셀렉터 이름은 무엇이던가요?

    • 다훈 이
      참가자
      • 글작성 : 1
      • 답글작성 : 5

      초보적인 질문 방법과 늦은 시간임에도 답변주셔서 감사드립니다.

      console 화면 내의 text중 어떤 것을 원하시는지 대략적으로 이해하였습니다.

      저의 초보적인 지식으로 인스턴스와 셀렉터에 관하여 명확한 답변드리지 못 할 수 있다고 여겨, 스크린샷 첨부해드립니다.

    • 야곰
      키 마스터
      • 글작성 : 37
      • 답글작성 : 580

      오류 메시지만으로 제가 이해하기로는 appleMap 아웃렛 프로퍼티의 연결이 잘못된 것 같다는 생각이 드는데요,
      다른 동작에서는 이상이 없다니 의아하네요.

    • 다훈 이
      참가자
      • 글작성 : 1
      • 답글작성 : 5

      답변 감사드립니다.

      다른 동작은 

      appleMap.setCameraZoomRange(MKMapView.CameraZoomRange.init(maxCenterCoordinateDistance: 3000), animated: true)

      appleMap.setCenter(appleMap.userLocation.coordinate, animated: true)

      와 같은 것들이었습니다.

       

      현재 addAnnotation의 작동에만 문제가 있는데, 조언주신대로 @IBOutlet var appleMap : MKMapView! 를 mapview에 다시 지정해보았지만 해결에 실패했습니다.

      제 질문에 시간을 쏟아주셔서 감사드립니다.

    • 다훈 이
      참가자
      • 글작성 : 1
      • 답글작성 : 5

      해당 버그 해결했습니다.

      매우 간단한 버그였습니다…

      아웃렛 프로퍼티 얘기해주신 것에 착안하여, 해당 버튼 이벤트에만 문제 생겼으므로, Action지정을 재설정하여 정상동작하게 수정했습니다.

      도움주셔서 감사드립니다.

    • 야곰
      키 마스터
      • 글작성 : 37
      • 답글작성 : 580

      액션 메서드 이름을 중간에 변경했나보군요!
      해결되어 다행입니다 🙂
      아마 이 영상이 도움이 될지도 모르겠습니다.

      또, 혹시나 오류가 아닌다 갑자기 앱이 멈추는 경우가 생긴다면 아래 영상도 참고해보세요 🙂

      • 이 답변은 야곰에 의해 3 years, 5 months 전에 수정됐습니다.
10 답변 글타래를 보이고 있습니다
  • 답변은 로그인 후 가능합니다.

logo landscape small

사업자번호 : 743-81-02195
통신판매업 신고번호 : 제 2022-충북청주-1278 호
고객센터 : 카카오톡채널 @yagom