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


164

나는 내 아이폰 6 플러스 아이폰 OS 10 베타 버전을 업데이트하고 바로 모바일 사파리, 당신은 두 번 눌러 모든 웹 페이지를 확대하거나 곤란 것으로 나타났습니다 무시user-scalable=no 메타 태그 코드를. 버그인지 기능인지 모르겠습니다. 기능으로 간주되면 뷰포트 확대 / 축소 iOS 10 사파리를 어떻게 비활성화합니까?


iOS 11/12 릴리스에서 업데이트되었지만 iOS 11 및 iOS 12 사파리는 여전히 메타 태그를 존중 하지 않습니다user-scalable=no .

Safari의 모바일 github 사이트


2
손쉬운 사용 기능 : iOS 10의 Safari에서 twitter.com/thomasfuchs/status/742531231007559680/photo/1
ErikE 2016 년

87
아닙니다. 일반적인 웹 콘텐츠에는 좋지 않습니다. 웹 앱의 경우 기본 확대 / 축소 동작이 사용성을 완전히 망칠 수 있습니다. 예를 들어, 아무도 채널 업 버튼을 두 번 탭하여 확대하거나, 비디오 게임의 일부를 점프 버튼을 두 번 탭하여 확대하고 싶지 않습니다. 이 기능이 처음에 추가 된 이유가 있으며, 일부 "웹 디자이너"가 자신이하는 일을 모르기 때문에 모든 사람에게 유용성을 떨어 뜨리는 것은 의미가 없습니다. 사이트 디자이너에게 소리를 지르고 브라우저 중단을 종료하십시오.
dgatwood

36
그것이 "나쁜 습관"이라고 말하는 것은 의견이며, 애플이 웹 표준을 채택하여 커뮤니티가 크로스 플랫폼을 구현하고 그에 대한 거대한 쓰레기를 가져 오는 데 몇 개월 / 년 / 수십 년을 소비한다는 사실을 바꾸지 않습니다. 왜 애플은 웹 디자이너가 자신이하는 일을 모른다고 지시해야 하는가? 끔찍한 주장.
samrap

2
개인적으로 이것은 개발자가 코드의 목적이 무엇인지 모르고 맹목적으로 복사하여 붙여 넣는 상용구 코드 온라인에서 비롯된 것이라고 생각합니다.
William Isted

7
대답은 간단합니다. Apple : 메타 태그를 사용하지 않도록 설정하면 기본적으로 사용 가능한 접근성 설정이됩니다. 그것을 필요로하는 사람들은 그렇지 않은 사람들을 처벌하지 않고 그것을 가질 것입니다.
Ruben Martinez Jr.

답변:


94

iOS 10에서는 Safari에서 웹 페이지 크기 조정을 막을 수 있지만 더 많은 작업이 필요합니다. 카고 컬트 개발자들이 모든 뷰포트 태그에 "user-scalable = no"를 떨어 뜨리고 시각 장애가있는 사용자에게는 불필요하게 어려운 일이 발생하는 것을 막는 데 어려움이 있다고 생각합니다.

그럼에도 불구하고 Apple이 더블 탭 투 줌을 비활성화하는 간단한 (메타 태그) 방법이 있도록 구현 방식을 변경하고 싶습니다. 어려움의 대부분은 그 상호 작용과 관련이 있습니다.

다음과 같이 핀치 투 줌을 중지 할 수 있습니다.

document.addEventListener('touchmove', function (event) {
  if (event.scale !== 1) { event.preventDefault(); }
}, false);

더 깊은 대상이 이벤트에서 stopPropagation을 호출하면 이벤트가 문서에 도달하지 않으며이 리스너가 스케일링 동작을 막지 않습니다.

두 번 탭하여 확대를 비활성화하는 것도 비슷합니다. 이전 탭에서 300 밀리 초 이내에 발생하는 문서의 탭을 비활성화합니다.

var lastTouchEnd = 0;
document.addEventListener('touchend', function (event) {
  var now = (new Date()).getTime();
  if (now - lastTouchEnd <= 300) {
    event.preventDefault();
  }
  lastTouchEnd = now;
}, false);

양식 요소를 올바르게 설정하지 않으면 입력에 초점을 맞추면 자동 확대 / 축소가 수행되며 수동 확대 / 축소를 대부분 사용하지 않도록 설정했기 때문에 이제 확대 / 축소를 해제하는 것이 거의 불가능합니다. 입력 글꼴 크기가 16 픽셀 이상인지 확인하십시오.

기본 앱의 WKWebView 에서이 문제를 해결하려는 경우 위에 제공된 솔루션이 가능하지만 https : //.com/a/31943976/661418보다 나은 솔루션 입니다. 다른 답변에서 언급했듯이 iOS 10 베타 6에서 Apple은 이제 메타 태그를 기리는 플래그를 제공했습니다.

2017 년 5 월 업데이트 : pinch-zoom을 비활성화하는 오래된 '터치 스타트 길이 터치 터치'방법을보다 간단한 'check event.scale on touchmove'접근 방식으로 대체했습니다. 모든 사람에게 더 안정적이어야합니다.


3
터치 스타트 핵은 일관되지 않습니다 ... 그리고 만약 당신이 그것을 회피한다면 당신은 매우 불편한 상태에 빠지게됩니다
Sam Saffron

5
예 : 전체 화면 매핑 앱에는 매핑 응용 프로그램 (Google Maps JS, Leaflet 등)에 하드 코딩 된 줌 기능이 있습니다. 메타 태그를 추가하는 <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />것이 좋습니다. 브라우저가 메타 태그를 존중하지 않으면 브라우저 디자인이 매우 나쁩니다. 매우 나쁜 디자인과 같은 다른 하나는 슬라이딩에 의한 뒤로 / 앞으로 행동으로, iOS 9/10에서는 막을 수 없습니다. 웹 응용 프로그램 내에서 작업을 심각하게 드래그하지 않습니다.
티모 hk 코넨

4
사용자가 한 손가락으로 드래그를 시작하면 화면에 두 번째 손가락을 대면 핀치 줌이 가능합니다. 당신은에 모두 줌과 스크롤 해제 할 수 있습니다 preventDefault에를 touchmove. 스크롤을 비활성화하지 않고 줌을 완전히 비활성화 할 수는 없습니다.
Paolo

10
와우,이 부분 (여기에 붙여 넣기)이 슈퍼 도움이되었습니다. 나는 인터넷상의 다른 곳에서 언급 한 것을 보지 못했습니다. 이 문제를 해결하는 데 몇 시간이 걸렸습니다. 폼이 자동 확대되지만 축소되지 않는 Apple의 UX 디자인 선택에 정말 실망했습니다. If you don't set up your form elements right, focusing on an input will auto-zoom, and since you have mostly disabled manual zoom, it will now be almost impossible to unzoom. Make sure the input font size is >= 16px.
Ryan

6
iOS 12에서는 더 이상 작동하지 않는 것 같습니다. iOS 12 에서이 작업을 수행하는 방법에 대한 아이디어가 있습니까?
TJR

78

이것은 iOS 10의 새로운 기능입니다.

iOS 10 베타 1 릴리스 정보에서 :

  • Safari에서 웹 사이트에 대한 접근성을 향상시키기 위해 웹 사이트가 설정되어 있어도 사용자가 확대 / 축소 할 수 있습니다. user-scalable=no 가 뷰포트에 되어 .

JS 애드온이 곧 어떤 방법 으로든 이것을 비활성화 할 것으로 기대합니다.


4
@ Onza : 나쁘지 않다고 생각합니다. 좋은 것 같아요 핀치 / 확대 / 축소 (기본 사용자 동작)를 사용하지 않는 것은 나쁜 것으로 간주되며 많은 모바일 웹 사이트가 그렇게합니다. 허용되는 유일한 사용자 사례는 앱처럼 보이고 느껴지는 실제 웹 앱입니다.
wouterds

6
Bad .. 웹 사이트에서 일부 요소를 선택한 경우에만 js를 사용하여 뷰포트를 변경하고 확대 / 축소를 선택하면 "결정"으로 인해 해당 요소가 손상됩니다. 누군가 차단을 결정하면 이유가 있습니다.
Zhenya

9
@Karlth 게임 개발자를위한 침대입니다
Sandeep

14
IOS 10.0.2가 있습니다. user-scalable = no는 더 이상 웹 사이트에서 확대 / 축소를 비활성화하지 않습니다 ... 확대 / 축소의 주요 문제는 고정 된 사이드 메뉴와 관련이 있습니다. 레이아웃이 깨집니다 .. 이것에 대한 아이디어 나 솔루션이 있습니까? 확대 / 축소가 접근성에 도움이된다는 것을 이해합니다. js 이벤트 (해머) 및 CSS를 사용하여 사이트의 특정 부분에서 확대 / 축소를 사용할 수있게 만들었습니다. 모든 사람에게 규칙을 적용해야하는 이유를 알지 못합니다. PC 경찰이 시작하는 것 같습니다 우리의 개발 세계를 이어받을 수 있습니까?!
웹킷

50
"허용되는 유일한 사용자 사례는 앱처럼 보이고 느껴지는 실제 웹 앱일 것입니다." -이것은 당신이 말했듯이, 실제 사용 가능한 사례이며, 그렇게 드물지 는 않습니다 .
Florrie

21

touch-action개별 요소 에서 css 속성을 사용 하여이 문제를 해결할 수있었습니다 . touch-action: manipulation;링크 나 버튼과 같이 일반적으로 클릭되는 요소를 설정 하십시오.


1
"조작"은 핀치 줌을 방지하지 않으며 더블 탭 줌만합니다.
Moos

4
이것이 정답입니다. touch-action: none;모든 제스처를 직접 제어 하는 데 사용할 수 있습니다 .
가이 소퍼

4
이 방법은 훌륭합니다. 핀치 줌을 유지하면서 더블 탭 줌을 비활성화하면 제스처로 간주해야합니다. 더블 탭은 안됩니다. 개 1 마리는 개입니다. 개 1 마리 + 개 1 마리는 우주 왕복선을 만들지 않습니다. 2 마리의 개를 만들고, 2 마리의 개가 기대하는 일을합니다. 나는 2 마리의 개가 우주 왕복선이 될 것이라고 예상 한 적이 없다. 못.
Larry

5
@GuySopher 아이폰 OS는 않습니다 되지 제공 touch-action: none만을 manipulatoin그대로 핀치 줌 문제 잎있는.
인류

14

이 동작은 최신 베타 버전에서 변경된 것으로 보이며, 작성 당시 베타 6입니다.

iOS 10 Beta 6 릴리스 정보 :

WKWebView이제는 기본적으로 user-scalable=no뷰포트를 기준으로합니다. 의 클라이언트는 WKWebView접근성을 개선하고 사용자가 WKWebViewConfiguration 속성 ignoresViewportScaleLimits을 로 설정하여 모든 페이지에서 확대 / 축소 할 수 있도록합니다 YES.

그러나 (매우 제한된) 테스트에서 아직 이것이 사실인지 확인할 수 없습니다.

편집 : 확인, iOS 10 Beta 6은 user-scalable=no기본적으로 나를 위해 존중 합니다.


11
여기 10.0.1. 그것을 존중하지 않습니다. 애플은 모든 사람의 필요 .. 기능을 제거하기로 무엇입니까
lifwanian

1
이것은 Safari 가 WKWebView 아님 을 나타냅니다 . 출처 : 우리의지도 응용 프로그램 중 하나는 파산하고 우리가하지 아니 그것을 해결하는 방법을 생각합니다.
Fabio Poloni

아하! 사과, 나는 동일한 버그 / 기능에 대한 해결책을 찾을 때 여기에 왔으며 WKWebView원래의 질문은 WKWebView내 대답을 쓸 때 물었다 . 따라서 첫 번째 베타 버전 중 하나에서 Apple은 WKWebView모바일 Safari와 모바일 Safari 의 동작을 변경 한 다음 베타 6에서는 모바일 Safari의 동작을 되돌 WKWebView렸지만 유지했습니다.
Cellane

1
10.0.2는 존중하지 않습니다 user-scalable=no. 나는 그들이 왜 이것을 취소 할 것인지 잘 모르겠다.
Aidan Hakimian

13

이 글을 쓰는 시점에서 Mobile Safari에서 작동하는 해결 방법은 addEventListenerbe 의 세 번째 인수를 갖는 { passive: false }것이므로 전체 해결 방법은 다음과 같습니다.

document.addEventListener('touchmove', function (event) {
  if (event.scale !== 1) { event.preventDefault(); }
}, { passive: false });

당신은 할 수 있습니다 옵션이 지원되는 경우 확인 하위 호환성을 유지 할 수 있습니다.


3
누구나 iOS 12에서 이것을 시도 했습니까? 위의 코드를 추가했는데 webapp에 아무런 영향을 미치지 않습니다. 이 바보 같은 사파리를 여전히 확대 할 수 있습니다. 내 메타 뷰포트 태그는 다음과 같습니다 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">. btw : .
Patrick DaVader

1
@PatrickDaVader Yep, iOS 12 Safari에서 작동하는 솔루션을 찾을 수 없습니다. 모든 끊임없는 확대 / 축소에서 멀미하기.
Jamie Birch

1
아이폰 OS (13) 내 <메타>의이 한 작품 태그는 다음과 같습니다 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, viewport-fit=cover, user-scalable=no, shrink-to-fit=no" /><meta name="HandheldFriendly" content="true">
스털링 Bourne 씨에게

1
@SterlingBourne 설정을 복사했습니다. 작동하지만 시간의 90 % 만 좋아합니다. 왜 항상 그렇지 않은지 잘 모르겠습니다.
Hillcow

1
@SterlingBourne 응답이 나를 위해 일했습니다! 감사. <meta name = "viewport"content = "width = device-width, initial-scale = 1, maximum-scale = 1, viewport-fit = cover, 투표 할 수 있도록 댓글이 아니라 답변으로 게시해야합니다. user-scalable = no, shrink-to-fit = no "/> 및 <meta name ="HandheldFriendly "content ="true ">
Gene Black

8

더 강력한 자바 스크립트 옵션을 찾기 위해 약 1 시간을 보냈지 만 찾지 못했습니다. 지난 며칠 동안 hammer.js (Hammer.js는 모든 종류의 터치 이벤트를 쉽게 조작 할 수있는 라이브러리입니다)를 다루었 고 주로 내가하려는 일에 실패했습니다.

그 경고와 내가 자바 스크립트 전문가라는 것을 결코 이해하지 못한다면, 이것은 기본적으로 hammer.js를 사용하여 pinch-zoom 및 double-tap 이벤트를 캡처 한 다음 기록하고 버리는 솔루션입니다.

페이지에 hammer.js를 포함시킨 다음이 자바 스크립트를 머리에 붙이십시오.

< script type = "text/javascript" src="http://hammerjs.github.io/dist/hammer.min.js"> < /script >
< script type = "text/javascript" >

  // SPORK - block pinch-zoom to force use of tooltip zoom
  $(document).ready(function() {

    // the element you want to attach to, probably a wrapper for the page
    var myElement = document.getElementById('yourwrapperelement');
    // create a new hammer object, setting "touchAction" ensures the user can still scroll/pan
    var hammertime = new Hammer(myElement, {
      prevent_default: false,
      touchAction: "pan"
    });

    // pinch is not enabled by default in hammer
    hammertime.get('pinch').set({
      enable: true
    });

    // name the events you want to capture, then call some function if you want and most importantly, add the preventDefault to block the normal pinch action
    hammertime.on('pinch pinchend pinchstart doubletap', function(e) {
      console.log('captured event:', e.type);
      e.preventDefault();
    })
  });
</script>


또한 hammer.js로 작업 할 때이 문제를 해결하려고 노력 .preventDefault했으며 모든 망치 제스처 처리기에 a 를 추가하여 뷰포트 확대를 방지 할 수 있음을 확인할 수 있습니다 . 나는 스 와이프 / 핀치 / 팬 / 탭을 함께 사용하고 있으며 모든 처리기에 추가했으며 작업을 수행하는 특정 처리기가 있는지 여부를 모르겠습니다.
Conan

6

핀치 투 줌에 대한 이전 답변을 시도했습니다.

document.documentElement.addEventListener('touchstart', function (event) {
    if (event.touches.length > 1) {
        event.preventDefault();
    }
}, false);

그러나 때로는 event.touches.length> 1 일 때 화면이 여전히 확대 되어 화면에서 손가락이 움직이지 않도록 touchmove 이벤트를 사용하는 것이 가장 좋습니다. 코드는 다음과 같습니다.

document.documentElement.addEventListener('touchmove', function (event) {
    event.preventDefault();      
}, false);

그것이 도움이되기를 바랍니다.


7
이것은 앱이 완벽하게 맞는 경우에만 작동합니다 ... 스크롤 가능한 콘텐츠가 있으면 작동하지 않습니다 ... 일부 시나리오에서는 여전히 좋은 해킹입니다.
eljamz

8
이것은 심지어 웹 사이트에서 스크롤을 비활성화합니다. BAD
Gags

@eljamz 주셔서 감사합니다. 그리고 그렇습니다 ..my 앱은 화면에 완벽하게 맞습니다.
Chihying Wu

@ Gags 아직 스크롤 기능을 테스트하지 않았습니다. 알려 주셔서 감사합니다.
Chihying Wu

6

Touchove 이벤트에서 스케일 팩터를 확인한 후 Touch 이벤트를 방지하십시오.

document.addEventListener('touchmove', function(event) {
    event = event.originalEvent || event;
    if(event.scale > 1) {
        event.preventDefault();
    }
}, false);

2
에 아이폰 OS (13) 변경 거짓 {수동 : 거짓}
wayofthefuture

6

하나의 스타일 규칙을 삽입하고 확대 / 축소 이벤트를 가로 채서 원하는 모든 것을 얻을 수 있습니다.

$(function () {
  if (!(/iPad|iPhone|iPod/.test(navigator.userAgent))) return
  $(document.head).append(
    '<style>*{cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}</style>'
  )
  $(window).on('gesturestart touchmove', function (evt) {
    if (evt.originalEvent.scale !== 1) {
      evt.originalEvent.preventDefault()
      document.body.style.transform = 'scale(1)'
    }
  })
})

✔ 핀치 줌을 비활성화합니다.

✔ 더블 탭 줌을 비활성화합니다.

✔ 스크롤은 영향을받지 않습니다.

✔ 탭 강조 표시를 비활성화합니다 (iOS에서는 스타일 규칙에 의해 트리거 됨).

주의 사항 : 원하는대로 iOS 감지 기능을 조정하십시오. 더 자세한 내용은 여기참조하십시오 .


lukejacksonPiotr Kowalski 에게 사과하며 위 코드에서 답변이 수정 된 형태로 나타납니다.


iOS 11.2를 실행하는 iPad 에뮬레이터에서 작동합니다. iOS 11.3을 실행하는 실제 iPad에서는 작동하지 않습니다. 이벤트가 발생하고 콘솔에 표시되도록 console.log를 추가했습니다. iOS 11.3과 관련이 있습니까? 아니면 실제 장치로?
Mathieu R.

1
@MathieuR. iOS 11.3 문제입니다. addEventListener기반 답변 중 하나를 사용 하고 대신 매개 변수 { passive: false }로 전달 하여 수정할 수 있습니다 . 그러나 이전 버전과의 호환성을 위해 옵션 필드가 지원 되지 않는 한 전달해야합니다 . 참조 developer.mozilla.org/en-US/docs/Web/API/EventTarget/...optionsfalsefalsepassive
조쉬 갤러거

@JoshGallagher 실제 사례를 제공해 주시겠습니까? iOS11에서는 대답이 없습니다.
Mick

'gesturestart'-> preventDefault는 iOS 12,2에서 글을 쓸 때 저에게 효과적입니다
Michael Camden

5

나는 순진한 해결책을 생각해 냈지만 효과가있는 것 같습니다. 내 목표는 실수로 두 번 탭하는 것이 확대로 해석되는 것을 방지하는 동시에 손쉬운 확대 / 축소 기능은 접근성을 위해 작동하는 것입니다.

아이디어는 더블 탭에서 첫 번째 touchstart와 두 번째 사이의 시간을 측정 touchend한 다음 touchend지연이 너무 작은 경우 마지막 을 클릭으로 해석하는 것 입니다. 우연한 확대 / 축소를 방지하는 동안이 방법은 목록 스크롤을 영향을받지 않는 것 같습니다. 그래도 아무것도 놓치지 않았는지 확실하지 않습니다.

let preLastTouchStartAt = 0;
let lastTouchStartAt = 0;
const delay = 500;

document.addEventListener('touchstart', () => {
  preLastTouchStartAt = lastTouchStartAt;
  lastTouchStartAt = +new Date();
});
document.addEventListener('touchend', (event) => {
  const touchEndAt = +new Date();
  if (touchEndAt - preLastTouchStartAt < delay) {
    event.preventDefault();
    event.target.click();
  }
});

mutewinter요지Joseph의 답변 에서 영감을 얻었습니다 .


5

필자의 경우 Babylon.js를 사용하여 3D 장면을 만들고 전체 페이지는 하나의 전체 화면 캔버스로 구성됩니다. 3D 엔진에는 자체 확대 / 축소 기능이 있지만 iOS에서는 핀치 투 줌이이를 방해합니다. 내 문제를 극복하기 위해 @Joseph 답변을 업데이트했습니다. 이를 비활성화하려면 이벤트 리스너에 옵션으로 {passive : false}를 전달해야한다는 것을 알았습니다. 다음 코드는 저에게 효과적입니다.

window.addEventListener(
    "touchmove",
    function(event) {
        if (event.scale !== 1) {
            event.preventDefault();
        }
    },
    { passive: false }
);

내 유스 케이스는 사용자 정의 핀치 컨트롤이있는 전체 페이지 3D 장면입니다. Apple이 사용자 규모를 명시 적으로 무시하는 해결 방법이 없다면 메타가 없었습니다.
Nick Bilyk

1

이상하게도 iOS 10.2의 Safari의 경우 요소 또는 조상 중 하나에 다음 중 하나가 있으면 이중 탭하여 확대 / 축소를 마술처럼 사용할 수 없습니다.

  1. onClick 리스너-간단한 noop 일 수 있습니다.
  2. cursor: pointerCSS 의 세트

꼬집기는 어때요?
Sam Su

불행하게도 확대 축소는이 솔루션에서 다루지 않습니다. 이를 위해 stackoverflow.com/a/39594334/374196
mariomc

나를 위해 작동하지 않습니다. 이 테스트 페이지를 사용하여 iPod Touch에서 10.2.1 베타 4를 사용하고 회색 사각형 확대 / 축소를 두 번 두드립니다. jsbin.com/kamuta/quiet
robocat

1
반응 앱에 범위가 있으며 작동하지 않습니다.
FMD

1

다음과 같은 경우에 의도하지 않은 확대 / 축소 가 발생하는 경향이 있습니다.

  • 사용자가 인터페이스 구성 요소를 두 번 탭
  • 사용자가 둘 이상의 숫자 (핀치)를 사용하여 뷰포트와 상호 작용

더블 탭 동작 을 방지하기 위해 두 가지 매우 간단한 해결 방법을 찾았습니다.

<button onclick='event.preventDefault()'>Prevent Default</button>
<button style='touch-action: manipulation'>Touch Action Manipulation</button>

이 두 가지 모두 Safari (iOS 10.3.2) 가 버튼 을 확대 하지 못하게 합니다. 보시다시피 하나는 JavaScript 전용이고 다른 하나는 CSS 전용입니다. 적절하게 사용하십시오.

데모는 다음과 같습니다. https://codepen.io/lukejacksonn/pen/QMELXQ

필자는 웹에 멀티 터치 인터페이스를 만들지 않는 경향이 있기 때문에 핀치 동작 (아직)을 방지하려고 시도하지 않았으며, 둘째로 네이티브 앱 UI를 포함한 모든 인터페이스가 "확대 / 축소"되어야한다는 생각으로 돌아 왔습니다. 장소에서 가능합니다. 나는 여전히 사용자 UI에 액세스 할 수 있도록하기 위해이 작업을 수행하지 않아도 되도록 설계하고 있습니다.


1

두 번 클릭하여 확대 / 축소하는 것을 방지하는이 간단한 해결 방법을 찾았습니다.

    // Convert touchend events to click events to work around an IOS 10 feature which prevents
    // developers from using disabling double click touch zoom (which we don't want).
    document.addEventListener('touchend', function (event) {
        event.preventDefault();
        $(event.target).trigger('click');
    }, false);

1

요청에 따라 사람들이 의견을 표명 할 수 있도록 의견을 답변에 전달했습니다.

이것은 iOS 13의 시간의 90 %에서 작동합니다.

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, viewport-fit=cover, user-scalable=no, shrink-to-fit=no" />

<meta name="HandheldFriendly" content="true">


0

iOS (iPhone 6, iOS 10.0.2)의 페이지에서 실제로 위의 모든 답변을 확인했지만 성공하지 못했습니다. 이것은 내 작업 솔루션입니다.

$(window).bind('gesturestart touchmove', function(event) {
    event = event.originalEvent || event;
    if (event.scale !== 1) {
         event.preventDefault();
         document.body.style.transform = 'scale(1)'
    }
});

불행히도 이것은 스크롤 가능한 콘텐츠가 아닌 페이지가 완벽하게 맞는 경우에만 작동합니다.
Shoe

흠. 이것은 내 경험 (iOS 10.3)에서 스크롤 가능한 컨텐츠와 잘 작동합니다.
jeff_mcmahan

0

이것은 나를 위해 일했다 :

document.documentElement.addEventListener('touchmove', function (event) {
    event.preventDefault();
}, false);

나는 이것을 시도했지만, 핀치 줌을 방지했지만 뷰포트의 터치 스크롤을 비활성화하여 더 이상 페이지를 위아래로 스크롤 할 수 없습니다.
TGR
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.