iOS8 아이패드에서 모달창 밖을 터치해 창닫기

일반적으로 iOS7에서 굳이 UIGestureRecognizer 딜리게이트를 사용하지 않더라도 터치 위치를 잡아 모달을 닫을 수 있었지만

iOS8부터는 딜리게이트를 반드시 사용해야하고 탭했을시 처리하는 코드도 조금 다르게 해야 동작합니다.

모달을 띄운 창에서 appdelegate의 window로 제스춰를 add해줍니다.

그런 후 반드시 딜리게이트를 이용해 다음과 같이 모두 YES로 설정합니다.

그런 후, 제스처에서 설정한 selector를 다음의 함수로 지정해주면 모달창을 꼭 닫기 버튼이 아닌 바깥 영역을 터치해 닫을 수 있습니다.

별로 중요하지 않은 정보 보여주는 창에서 사용하면 유용할 것 같습니다.

소스코드를 보시면 ios8이면서 landscape모드인 경우 x, y의 좌표를 아래와 같이 반대로 가져와야 합니다.

저의 경우 가로모드로만 사용하고 있어서 저렇게 해봤구요! 세로도 지원한다면 else 구문 추가해 location.x 와 location.y의 위치를 바꿔주는 구문을 추가해주면 됩니다.

Published by

안반장

Web과 App 개발을 하고 있으며 최근 워드프레스에 관심이 많아져 네이버 카페 워드프레스 홈페이지의 TF팀으로 활동 중 입니다.개인적으로는 안반장의 개발 노트라는 블로그를 운영하면서 개발의 즐거움과 고충들을 차곡차곡 담아가고 있습니다.