2013-08-06 3 views
0

iframe을 통해 포함해야하는 응답하지 않는 페이지가 있습니다. 전체 iframe을 표시하기 위해 자바 스크립트를 사용하여 뷰포트 너비와 비율을 동적으로 설정했습니다. iframe을 닫을 준비가되면 뷰포트 너비와 배율을 원래 값으로 다시 설정합니다.ios 뷰포트 초기 크기가 화면 키보드 뒤를 따르지 않음

일반적으로 정상적으로 작동합니다. 그러나 화면 키보드를 열면 (예 : 텍스트 입력 포커스) iOS는 더 이상 크기 조정을 거부합니다. 초기 크기가 아닌 뷰포트의 크기 조정에 적용됩니다. 흥미롭게도, 디바이스를 회전 시키면 결국 초기 스케일을 존중할 것입니다.

나는 이것이 iOS 버그 일 수 있다고 생각합니다. 모든 조언을 크게 주시면 감사하겠습니다.

답변

0

그래서 트릭은 단순히 키보드를 다시 트리거하는 것입니다. 키보드가 열리면 설정 한 뷰포트 눈금이 즉시 적용됩니다.

키보드를 팝업으로 표시하는 것이 완료보다 쉽습니다. 기본적으로 실제 클릭 이벤트 또는 mouseup 이벤트를 처리 한 다음 클릭 핸들러 (http://jsfiddle.net/DLV2F/87/)에서 직접 텍스트 입력 포커스를 트리거해야합니다.

<input> 
<p id="click">Click handler</p> 
<p id="click-timeout">Click handler setting timeout</p> 
<p id="mousedown">Mousedown handler</p> 
<p id="mousedown-timeout">Mousedown handler setting timeout</p> 
<p id="mouseup">Mouseup handler</p> 
<p id="mouseup-timeout">Mouseup handler setting timeout</p> 
<p id="extern-click-trigger">Clicking here will trigger click on the first 'Click Handler'</p> 
<p id="tap">Virtual 'TAP' handler</p> 
<p id="tap-triggering-click">Virtual 'TAP' handler triggering click on the first 'Click handler'</p> 

<script> 
function focus() { 
    $('input').focus(); 
} 
$(focus); 
$(function() { 
    $(document.body).load(focus); 
    $('#click').click(focus); 
    $('#click-timeout').click(function() { 
     setTimeout(focus); 
    }); 
    $('#mousedown').mousedown(focus); 
    $('#mousedown-timeout').mousedown(function() { 
     setTimeout(focus); 
    }); 
    $('#mouseup').mouseup(focus); 
    $('#mouseup-timeout').mouseup(function() { 
     setTimeout(focus); 
    }); 
    $('#extern-click-trigger').click(function() { 
     $('#click').click(); 
    }); 
    $('#tap').bind('tapone', function() { 
     focus(); 
    }); 
    $('#tap-triggering-click').bind('tapone', function() { 
     $('#click').click(); 
    }); 

}); 
</script 
관련 문제