2013-09-24 42 views
19

Tôi đang cố gắng biên dịch lại ứng dụng cho iOS 7, vì không có ứng dụng nào cũ hoạt động cho đến nay. Một trong nhiều vấn đề là tôi đang sử dụng một số đầu vào bên trong UIWebViews. Đầu vào văn bản, bộ chọn, v.v.Yếu tố đầu vào iOS 7 di chuyển các phần tử cố định vị trí

Bây giờ, khi bàn phím màu trắng sáng lên iOS 7 xuất hiện, tất cả các phần tử cố định dưới cùng trong trang web (chẳng hạn như, nút xác nhận) được cuộn lên trên, như thể 'đầu' của bàn phím ảo là đáy mới của UIWebView của tôi. Đây là một hành vi khác biệt đáng kể từ iOS6.x

Có bất kỳ mẹo ảo nào để làm cho hành vi bàn phím ảo hoạt động như trước đây, mà không cần tiêm JS/CSS vào webView không?

Trả lời

44

Điều này đã khắc phục được sự cố cho ứng dụng cordova của tôi. Tôi không chắc chắn nếu nó áp dụng cho bạn, nhưng chỉ trong trường hợp.

Kiểm tra thẻ meta html của bạn cho một cái gì đó như thế này:

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0"> 

Thay thế nó với điều này:

<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0, target-densityDpi=device-dpi" /> 
+0

Vui mừng khi giúp đỡ! Hãy chấp nhận câu trả lời để những người khác có thể thấy :) – Opossum

+3

Bạn đã thử ứng dụng này với ứng dụng phong cảnh chưa? "thiết bị-chiều cao" khi ở chế độ ngang vẫn là 1024 nên phần dưới cùng của màn hình không được xem. –

+0

Ứng dụng của tôi xoay sang chế độ ngang khi được bật và tôi chưa thấy sự cố này. Nếu tôi thấy nó, tôi sẽ cho bạn biết. – Opossum

6

tôi chạy qua một cách chính xác cùng một vấn đề & đã từ bỏ sau hai ngày thử nghiệm. Có vẻ như: a) tất cả các phần tử cố định dưới lên trên sao cho phần dưới của chúng tương ứng với cạnh trên của bàn phím c) tất cả các phần tử cố định ở trên vị trí ban đầu của chúng (không di chuyển lên trên khi chúng được sử dụng để) - lưu ý rằng các yếu tố trên cùng tuyệt đối hoạt động tốt.

Giải pháp duy nhất tôi thấy được để có một phong tục iPad stylesheet thay thế tất cả các yếu tố cố định với các yếu tố tuyệt đối, đặt css tài sản dưới để tự động và sử dụng hàng đầu thay vì

-1

Opposum, giải pháp của bạn làm việc cho tôi nhưng chỉ khi tỷ lệ đã được đặt thành 1.0. Nếu tôi đặt nó là 0,9 thì nó sẽ giống như trước khi bạn sửa chữa. Tôi thiết lập quy mô ban đầu, tối đa quy mô, và quy mô tối thiểu đến 0,9 và hiệu ứng nảy của các đối tượng cố định khi bàn phím xuất hiện vẫn đang diễn ra.

+1

Đánh lừa xung quanh với nội dung của meta, có vẻ như quy mô tối thiểu là vấn đề. Khi bỏ qua, vị trí cố định vị trí tồn tại. Khi được đặt thành giá trị nhỏ hơn 1.0, vị trí cố định vị trí tồn tại. Khi được đặt thành một giá trị lớn hơn hoặc bằng 1.0 thì vấn đề vị trí cố định được giải quyết. –

+0

Đây không phải là câu trả lời, mà chỉ là một quan sát; do đó thuộc về một lưu ý thay thế. – Lev

8

Trong trường hợp của chúng tôi, điều này sẽ tự khắc phục ngay sau khi người dùng cuộn. Vì vậy, đây là việc sửa chữa chúng tôi đã sử dụng để mô phỏng một cuộn trên blur trên bất kỳ input hoặc textarea:

$(document).on('blur', 'input, textarea', function() { 
    setTimeout(function() { 
     window.scrollTo(document.body.scrollLeft, document.body.scrollTop); 
    }, 0); 
}); 
+0

Buộc cuộn như thế này làm việc cho tôi. Chế độ xem sửa lỗi bên dưới * có thể * hoạt động nhưng cũng có thể gây ra sự cố với ứng dụng Cordova, trong đó width = device-width, height = device-height, có thể dẫn đến sự cố cuộn. https://issues.apache.org/jira/browse/CB-4323 – zungaphobia

+0

Giải pháp này dường như là giải pháp duy nhất không phá vỡ bất cứ điều gì. Bạn cũng có thể kiểm tra tác nhân người dùng để giới hạn điều này chỉ với các thiết bị di động. var is_mobile = navigator.userAgent.match (/ (iPad) | (iPhone) | (iPod) | (android) | (webOS)/i); –

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