2013-04-29 33 views
48

Tôi đang sử dụng phiên bản Phonegap mới nhất trên IOS (ipad) và dường như tôi không thể tắt tính năng ghi đè/trả lại dọc trên toàn bộ ứng dụng. Tôi không nhớ nó trên các yếu tố bên trong nhưng có vẻ khá lạ khi bạn vuốt lên hoặc xuống và toàn bộ ứng dụng bị trả lại lên và xuống.Dừng overscroll/bounce trong Phonegap IOS

Tôi đã thử đặt UIWebViewBounce thành no trong .plist tuy nhiên dường như không làm gì cả.

Đánh giá cao sự trợ giúp :)

Trả lời

161

Bạn phải sửa đổi thuộc tính trong tệp config.xml của mình. Chỉ cần đặt ưu tiên sau đây để true

<preference name="DisallowOverscroll" value="true" /> 
+6

Kể từ Cordova 2.6, UIWebViewBounce đã được thay đổi để DisallowOverscroll . http://docs.phonegap.com/en/3.1.0/guide_platforms_ios_upgrading.md.html#Upgrading%20iOS – Reborn

+0

nơi tôi có thể tìm thấy tệp config.xml này trong ứng dụng iphone? –

+1

Tôi tìm thấy một số tệp config.xml khác nhau Có một tệp trong thư mục chính và tôi thay đổi nó ở đó. Nhưng sau đó khi tôi xây dựng các ứng dụng cho iOS hai tập tin config.xml hơn sau đó được tạo ra, một trong các nền tảng/ios thư mục và một trong các nền tảng/iOS/www. Một trong các nền tảng/ios dường như có nhiều thứ hơn sau đó một trong đó tôi đã chỉnh sửa trong thư mục chính của tôi (bao gồm cả sở thích cho overscroll không cho phép). –

16

Câu trả lời được chấp nhận không làm việc cho tôi, tôi đã phải thiết lập UIWebViewBounce-false:

<preference name="UIWebViewBounce" value="false" /> 
+0

Tôi đang sử dụng phiên bản 3.4 của cordova để nó không hoạt động. Nhưng điều này đã thực hiện công việc: http: // stackoverflow.com/questions/22294677/phonegappreventing-bounce-only-in-the-main-window –

+2

Điều này không hoạt động trong Cordova 6.1.1. –

+0

'UIWebViewBounce' đã được đổi tên thành' DisallowOverscroll' và giá trị đã được đảo ngược, nhưng như CLI 6.5.0 nó không hoạt động đối với các ứng dụng Windows Universal (WP8). – andreszs

1

Sử dụng này:

<preference name="UIWebViewBounce" value="false" /> 
+2

Điều này không hoạt động trong Cordova 6.1.1. –

2

này là những gì làm việc cho ứng dụng của tôi chạy phonegap 3.0: thêm dòng sau vào config.xml

<preference name="webviewbounce" value="false"/> 
+1

Điều này không hoạt động. –

13

bây giờ cho PhoneGap 3,0 trên sử dụng phiên bản dưới đây Syntex trong file config.xml và nó sẽ hoạt động 100%

<preference name="DisallowOverscroll" value="true"/> 
+2

Điều này không hoạt động trong Cordova 6.1.1. –

+0

Câu trả lời này có hiệu quả đối với tôi trên Cordova 6.1.1. @ Mr.TA phải có một số vấn đề khác. – raider33

+0

Điều này vẫn không hoạt động trên WP8 Windows Universal apps với CLI 6.5.0. – andreszs

6

Nếu bạn đang thêm <preference name="DisallowOverscroll" value="true"/> để config.xml mà không cần bất kỳ may mắn, bạn có thể đang thay đổi tập tin sai. Thay vào đó, tìm kiếm toàn bộ thư mục Phonegap cho "DisallowOverscroll." Bạn nên tìm một số trường hợp. Thay đổi những người đó thành true.

Chúc mừng.

+0

Tôi không tìm thấy bất kỳ trường hợp nào khác ngoài các dòng trong config.xml mà tôi tự thêm vào. –

2

Trong config.xml của dự án của bạn, trong tùy chọn dành cho iOS, DisallowOverscroll to true. Theo mặc định, nó là false làm cho toàn bộ khung nhìn cuộn cùng với các phần tử bên trong của khung nhìn.

<preference name="DisallowOverscroll" value="true" /> 
+1

Điều này không hoạt động. –

2

Trong config.xml của dự án của bạn, trong tùy chọn dành cho iOS set DisallowOverscroll to true.

<preference name="DisallowOverscroll" value="true" /> 
+2

Điều này không hoạt động. –

3

Có cách tôi đã sử dụng để đạt được điều này. nhưng nó không thông thường bởi vì nó xử lý mã nguồn gốc. Trong MainViewController có một phương thức có tên là webViewDidFinishLoad. Bao gồm
WebView.scrollView.bounces = NO;

bên trong phương thức đó.

- (void)webViewDidFinishLoad:(UIWebView*)theWebView 
{ 
    // Black base color for background matches the native apps 
    theWebView.backgroundColor = [UIColor blackColor]; 
    theWebView.scrollView.bounces= NO; 
    return [super webViewDidFinishLoad:theWebView]; 
} 

Vì đây là mã gốc ios, điều này sẽ hoạt động trong bất kỳ phân phối phonegap/cordova nào.

+0

Điều này không hoạt động trong Cordova 6.1.1. –

+0

Bạn đã thử nghiệm mã này chưa? Nó không có gì với Cordova cả. –

+0

Có. Bạn đúng rồi. Đó là mã c khách quan. Tôi đã sử dụng điều này bởi vì mỗi khi cordova thay đổi, tôi phải sửa đổi mã hoặc cài đặt. Bằng cách này tôi không phải. –

1

Điều này phù hợp với tôi. Hãy thử thêm mã này trong file config.xml của ứng dụng PhoneGap của bạn:

<preference name="DisallowOverscroll" value="true">

+2

Điều này không hoạt động trong Cordova 6.1.1. –

+1

Bạn đã viết nhận xét này trong mỗi câu trả lời –

+0

Vì vậy, GÌ LÀM VIỆC? –

4

Nếu không có gì khác hoạt động, cố gắng để loại bỏ -webkit-overflow-scrolling: touch từ css của bạn ... nếu bạn đã có nó!

+0

Vấn đề là cũng vô hiệu hóa việc di chuyển tốc độ. –

+0

Yah, tôi đã cố gắng giải quyết vấn đề này một thời gian và về cơ bản tôi đã đi đến kết luận rằng không thể vô hiệu hóa tính năng cuộn cuộn mà không vô hiệu hóa vận tốc cuộn, mà không bắt chước vận tốc trong javascript. –

2

Cảm ơn tất cả câu trả lời. Nhưng nếu bạn có vấn đề trong cửa sổ điện thoại ở đây là giải pháp. Chỉ cần vào tập tin MainPage.xaml.cs và thay thế dưới đây chức năng ..

public MainPage() 
    { 
     InitializeComponent(); 
     this.CordovaView.DisableBouncyScrolling = true; 
     this.CordovaView.Loaded += CordovaView_Loaded; 
    } 

của nó làm việc cho tôi :)

+0

Cảm ơn bạn, siêu hữu ích! –

1

Nó là tốt hơn để sửa đổi hai yếu tố trong config.xml như sau:

<preference name="DisallowOverscroll" value="true"/> 
<preference name="UIWebViewBounce" value="false" /> 
+2

Điều này không hoạt động trong Cordova 6.1.1. –

4

Sử dụng theo cách này: -

function disallowOverscroll(){ 
    $(document).on('touchmove',function(e){ 
    e.preventDefault(); 
    }); 
    $('body').on('touchstart','.scrollable',function(e) { 
    if (e.currentTarget.scrollTop === 0) { 
     e.currentTarget.scrollTop = 1; 
    } else if (e.currentTarget.scrollHeight 
       === e.currentTarget.scrollTop 
        + e.currentTarget.offsetHeight) { 
     e.currentTarget.scrollTop -= 1; 
    } 
    }); 
    $('body').on('touchmove','.scrollable',function(e) { 
    e.stopPropagation(); 
    }); 
} 
disallowOverscroll(); 

Để biết thêm chi tiết hoặc Mẹo & Thủ thuật, vui lòng đọc bài viết này click

+0

Điều này không hoạt động trong Cordova 6.1.1. –

2

Tôi gặp sự cố tương tự nhưng không thể khắc phục với tất cả các giải pháp mà tôi đã tìm thấy (như chỉnh sửa config.xml).

Nhưng cuối cùng, chỉ cần chỉnh sửa thuộc tính CSS của cơ thể sau đó nó cố định:

html,body 
{ 
    overflow: auto; 
    height:100%; 
} 
+0

nó thay đổi sự kiện cuộn liên kết với 'document.body' không 'cửa sổ'. –

2

Hãy thử Một này Nếu bạn nộp ion sử dụng khuôn khổ Abc.html bên trong nội dung.

<ion-content has-bouncing="false">

+1

tác phẩm này dành cho tôi – Valix85

0

Mở Xcode -> tìm và click vào config.xml từ trái menu-> và thay đổi DisallowOverscroll giá trị false thành true Hoặc sử dụng mã này bằng cách thay thế trước đó.

<preference name="DisallowOverscroll" value="true" /> 
0

Đối Cordova 7 và một chiếc iPhone 7 + iOS 11.0.3, sửa đổi config.xml gốc thư mục và thêm này làm việc thật đẹp:

<platform name="ios"> 
    <preference name="DisallowOverscroll" value="true" /> 
    <preference name="UIWebViewBounce" value="false" /> 
    ... (other stuff) ... 
</platform> 
Các vấn đề liên quan