2010-06-27 32 views
10

Tôi không biết nếu điều này thậm chí có thể hoặc những gì Google để tìm thấy nó, nhưng cũng giống như bạn có thể thêm:iPhone HTML5 App cuộn Câu hỏi

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

Và nó sẽ làm cho nó nên bạn không thể di chuyển song song, chỉ lên và xuống. Có cách nào để làm cho nó để nó không làm hiệu ứng overscroll khi bạn đạt đến kết thúc nhưng tiếp tục di chuyển và sau đó nó bật trở lại? Giống như các ứng dụng Cocoa, tôi nhận thấy rằng "overscroll" đôi khi chúng có màu nền giống nhau vì vậy nó không giống như của Safari hay nó không làm gì cả?

Trả lời

14

Điều bạn gọi là ghi đè được gọi là số trang không truy cập. Rất tiếc, không có cách nào được tài liệu hóa để tắt thư bị trả lại trong UIWebView. Bạn có thể xem xét UIScrollView cho các phương thức liên quan đến thư bị trả lại. UIWebView sở hữu UIScrollView nhưng không hiển thị nó.

Để ngăn cuộn ngang, bạn chỉ cần đảm bảo rằng trang web của bạn vừa với khung nhìn. Một nguyên nhân phổ biến không phù hợp là mặt hàng có chiều rộng 100% khi lề cơ thể không bằng 0.

Bạn hoàn toàn có thể ngăn cuộn và trả lại bằng cách thêm trình xử lý sự kiện chạm vào tài liệu và gọi ngăn chặnDefault trên sự kiện. Điều này sẽ vô hiệu hóa hiệu quả thư bị trả lại nếu trang web của bạn hoàn toàn phù hợp trong chế độ xem.

function stopScrolling(touchEvent) { touchEvent.preventDefault(); } 
document.addEventListener('touchstart' , stopScrolling , false); 
document.addEventListener('touchmove' , stopScrolling , false); 

Edit:

UIWebView chủ yếu là tư nhân từ phía Objective-C nhưng khá dễ tiếp cận từ phía javascript. Bạn có thể inject javascript nếu bạn không kiểm soát nội dung đang được tải.

+0

tào lao, cảm ơn! Biết một cách để làm (w/o JS) để làm vị trí cố định sau đó? –

+0

@drawnonward. Điều này làm việc tuyệt vời cho tôi, ngoại trừ nó vô hiệu hóa tất cả các menu 'select' của tôi. Có cách nào để giải quyết vấn đề đó không? – JSW189

5

Nếu bạn đang sử dụng Cordova 1.7+, chỉ cần mở file Cordova.plist và thiết lập phím UIWebViewBounce-NO

Trong Cordova 2.3 trở lên, điều này bây giờ được config.xml và bạn cần phải thiết lập nó để false .

2

@ JSW189

nếu bạn xóa dòng này:

document.addEventListener('touchstart' , stopScrolling , false); 

Sau đó, nó sẽ làm việc, tôi đoán. Tôi nhận được vấn đề mà tôi không thể nhấn nút nữa, tôi cố gắng xóa dòng này ở trên và nó không cuộn nữa và tôi có thể nhấn nút.

+0

Điều này cũng làm việc cho tôi – Mike