ios 터치이벤트 (hover이벤트 문제, 더블터치시 화면확대현상)
iOS Safari에서 더블 터치로 인한 화면 확대 방지 (두번 탭 확대 방지)
iOS 10에서부터 뷰포트 메타에 user-scalable=no 가 정상 실행되지 않아 사용자의 임의 확대 축소를 막을 수 없게 됨.
touch-action: manipulation를 사용하는 것으로 해결이 안되는 상황일 때.
note.toice.net/2017/09/13/iOS-double-touch-zoom/
해결 방법
어떡하지 고민하다 그런 문제가 발생하지 않는 기존 작업페이지를 보니 FastClick이 모두 적용되어 있어서 체크해보니 해당 현상을 막을 수 있는게 덤.
FastClick 플러그인 적용 https://github.com/ftlabs/fastclick
주의
이미 작업되어진 페이지에 추가로 FastClick 플러그인을 사용할 경우 페이지내 클릭 테스트가 필요.
특히 iScroll 플러그인을 사용한 영역에서 클릭이 되지 않을 수 있으니 특히 더 주의.
만약 플러그인 적용 후 클릭이 되지 않으면 해당 엘리먼트 클래스에 needsclick 추가.
(참고 : https://github.com/ftlabs/fastclick#ignore-certain-elements-with-needsclick)
hover이벤트 문제
마우스를 시뮬레이션하기 위해 Webkit 모바일과 같은 브라우저는 사용자가 터치 스크린 (예 : iPad)에서 손가락을 뗀 경우 다음 이벤트를 발생시킵니다 (출처 : html5rocks.com의 Touch And Mouse ).
- touchstart
- touchmove
- touchend
- 300ms 지연, 브라우저는 이것이 두 번 탭이 아니라 한 번 탭인지 확인합니다.
- mouseover
- mouseenter
- 참고 하십시오 경우 mouseover, mouseenter또는 mousemove이벤트 페이지 내용을 변경, 다음 이벤트가 실행되지 않습니다.
- mousemove
- mousedown
- mouseup
- click
단순히 웹 브라우저에 마우스 이벤트를 건너 뛰도록 지시하는 것은 불가능 해 보입니다.
더 나쁜 것은 마우스 오버 이벤트가 페이지 콘텐츠를 변경하는 경우 Safari 웹 콘텐츠 가이드-이벤트 처리 , 특히 One-Finger 이벤트의 그림 6.4에 설명 된대로 클릭 이벤트가 발생하지 않는다는 것 입니다. 정확히 "내용 변경"은 브라우저와 버전에 따라 다릅니다. iOS 7.0의 경우 배경색 변경은 콘텐츠 변경이 아닙니다 (또는 더 이상 변경되지 않습니까?).
qastack.kr/programming/3038898/ipad-iphone-hover-problem-causes-the-user-to-double-click-a-link
humanwhocodes.com/blog/2012/07/05/ios-has-a-hover-problem/
qastack.kr/programming/3038898/ipad-iphone-hover-problem-causes-the-user-to-double-click-a-link
qastack.kr/programming/3038898/ipad-iphone-hover-problem-causes-the-user-to-double-click-a-link
shylog.com/settings-for-a-more-complete-webview/
////////
기존 모바일에서 확대 축소를 막기 위해선
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
코드만 추가해주기만 하면 정상적으로 작동이 됬습니다.
IOS 10 이후 새 기능으로
To improve accessibility on websites in Safari, users can now pinch-to-zoom even when a website sets user-scalable=no in the viewport.
가 추가됨과 동시에 user-scalable=no 만으로는 아이폰 사파리에서 확대 축소가 불가능해졌습니다.
오늘은 css의 touch-action 으로 모바일 확대 축소 막는 방법을 알아보겠습니다.
touch-action: pan-y;
를 사용하게 되면 세로 터치는 가능하게 되고 전체 확대는 불가능하게 됩니다.
위의 방법에서 문제점 발견
safari에서는 정상작동안됨 . 여전히 더블터치시 화면확대됨.
qastack.kr/programming/9038625/detect-if-device-is-ios
qastack.kr/programming/37808180/disable-viewport-zooming-ios-10-safari