2016-09-09 18 views
9

Safari di động không cập nhật cửa sổ.ảnh trướcHigh khi bàn phím bật lên. (Ít nhất là trong 9.3.5, và có một số câu trả lời như this một, với ý kiến ​​nói rằng đã phá vỡ trong ios 8,2)Iphone safari không thay đổi kích thước chế độ xem trên bàn phím mở

Apple documentation nói used to say before they edited it rằng window.innerHeight sẽ trở lại với iOS 10

Trong iOS 10, đối tượng WKWebView khớp với hành vi gốc của Safari bằng cách cập nhật thuộc tính window.innerHeight khi bàn phím được hiển thị và không gọi lại các sự kiện thay đổi kích thước.

Tôi cần phải biết phải làm gì trong khi chờ xử lý safari iPhone vừa đẩy trang web ra khỏi chế độ xem thay vì thay đổi kích thước.


Tôi có một ứng dụng sử dụng định vị tuyệt đối cho mọi thứ và có div bị tràn giữa đầu trang và chân trang.

.mainContent { 
    position: absolute; 
    top: 50px; 
    bottom: 28px; 
    left: 0; 
    right: 0; 
} 

Plunker đây.

Ảnh chụp màn hình, làm việc như mong đợi trên android:

Không làm việc như mong đợi trên iphone:

Dựa trên this answer Tôi có một cách JS mẹ đẻ xác định xem bàn phím iphone có đang mở hay không,

document.getElementById('chat-input').addEventListener('focus', function(){ 
     if(/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream){ 
     console.log("IOS focus"); 
     var scroll = window.scrollTop; 
     window.scrollTop = 10; 
     var keyboard_shown = window.scrollTop > 0; 
     window.scrollTop = scroll; 

     if(keyboard_shown){ 
      console.log("keyboard"); 
     }else{ 
      console.log("no keyboard"); 
     } 
     } 
    }); 
    })(); 

Nhưng điều đó không thực sự giải quyết được vấn đề vì window.innerHeight không thay đổi, vì vậy tôi không biết bàn phím lớn đến cỡ nào. Tôi chỉ có thể làm cho một danh sách các nghị quyết iphone, và chiều cao bàn phím của họ, và chỉ là một người hardcoding khủng khiếp ...

+0

Bạn có thể cung cấp một màn hình? Tôi không sở hữu iPhone nhưng muốn biết vấn đề thực sự ở đây là gì. – Senthe

+0

@ Xin lỗi đã quá lâu, tôi không sở hữu một trong hai và phải đi làm. Nhưng hình ảnh hiện đang có trong câu hỏi. – mtfurlan

+0

Tôi hiểu ngay bây giờ. Tôi không nghĩ rằng nó có thể làm bất cứ điều gì với hành vi này ở đây. Điều tương tự cũng xảy ra ngay cả với thuộc tính 'fixed'. Giải pháp "hardcoding" của bạn có thể sẽ không hoạt động vì tôi cho rằng có thể trên iOS để cài đặt ứng dụng bàn phím không phải bản địa. Nếu tôi là bạn, tôi sẽ vui rằng ít nhất phần dưới cùng, nơi bạn gõ tin nhắn ở đúng nơi. : ( – Senthe

Trả lời

2

Safari 10 Docs

Safari và WKWebView trên iOS 10 không cập nhật tài sản window.innerHeight khi bàn phím được hiển thị. Trên các phiên bản trước của iOS WKWebView sẽ cập nhật thuộc tính window.innerHeight khi bàn phím được hiển thị.

vẻ docs nay nêu rõ hành vi trái ngược với đó ghi nhận của OP

+2

... Họ chỉnh sửa trước khi phát hành của họ. Tôi rất ấn tượng. "Chúng tôi luôn chiến tranh với Eastasia" và tất cả những điều đó. https://web.archive.org/web/20160613195513/https://developer.apple.com/library/prerelease/content/releasenotes/General/WhatsNewInSafari/Articles/Safari_10_0.html – mtfurlan

+0

ok, nhưng làm cách nào chúng tôi có thể khắc phục vấn đề? –

Các vấn đề liên quan