ios 터치이벤트 (hover이벤트 문제, 더블터치시 화면확대현상)

 

iOS Safari에서 더블 터치로 인한 화면 확대 방지 (두번 탭 확대 방지)

 

iOS 10에서부터 뷰포트 메타에 user-scalable=no 가 정상 실행되지 않아 사용자의 임의 확대 축소를 막을 수 없게 됨.

touch-action: manipulation를 사용하는 것으로 해결이 안되는 상황일 때.

note.toice.net/2017/09/13/iOS-double-touch-zoom/

 

iOS 두번 탭 확대 방지

iOS Safari에서 더블 터치로 인한 화면 확대 방지 iOS 10에서부터 뷰포트 메타에 user-scalable=no 가 정상 실행되지 않아 사용자의 임의 확대 축소를 막을 수 없게 됨. 문제사용자의 확대/축소 의도가 아�

note.toice.net

 

해결 방법

어떡하지 고민하다 그런 문제가 발생하지 않는 기존 작업페이지를 보니 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 ).

  1. touchstart
  2. touchmove
  3. touchend
  4. 300ms 지연, 브라우저는 이것이 두 번 탭이 아니라 한 번 탭인지 확인합니다.
  5. mouseover
  6. mouseenter
    • 참고 하십시오 경우 mouseover, mouseenter또는 mousemove이벤트 페이지 내용을 변경, 다음 이벤트가 실행되지 않습니다.
  7. mousemove
  8. mousedown
  9. mouseup
  10. 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

 

iPad / iPhone 호버 문제로 인해 사용자가 링크를 두 번 클릭합니다.

 

qastack.kr

humanwhocodes.com/blog/2012/07/05/ios-has-a-hover-problem/

 

iOS has a :hover problem

 

humanwhocodes.com

qastack.kr/programming/3038898/ipad-iphone-hover-problem-causes-the-user-to-double-click-a-link

 

iPad / iPhone 호버 문제로 인해 사용자가 링크를 두 번 클릭합니다.

 

qastack.kr

qastack.kr/programming/3038898/ipad-iphone-hover-problem-causes-the-user-to-double-click-a-link

 

iPad / iPhone 호버 문제로 인해 사용자가 링크를 두 번 클릭합니다.

 

qastack.kr

shylog.com/settings-for-a-more-complete-webview/

 

보다 완벽한 webview를 위한 세팅들 | 수줍은 동그래 블로그

해당 글은 2019년 3월에 작성된 글 입니다. 🙏 보다 완벽한 webview를 위한 세팅들 App에서 webview를 이용해서 앱을 웹으로 대체하는 경우가 꽤 있다. 퍼포먼스 면에서는 아직 웹뷰가 네이티브뷰를 따

shylog.com

 

 

 

////////

 

 

 

기존 모바일에서 확대 축소를 막기 위해선

 

<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

 

기기가 iOS인지 감지

 

qastack.kr

 

qastack.kr/programming/37808180/disable-viewport-zooming-ios-10-safari

 

뷰포트 확대 / 축소 사용 중지 iOS 10 이상 사파리?

 

qastack.kr

 

반응형

+ Recent posts