UIWebView是iOS SDK中一個最常用的控件,在PhoneGap中,默認也是使用UIWebView作為默認視圖顯示我們的HTML應用的。
在使用PhoneGap的項目中,默認WebViewBounce這個選項是打開的,所以使用手指向下或者向上滑動屏幕時,經常會看到頁面底部和屏幕底部會出現一大片空白,然后松開手指后,再彈回去的特效。
之前查了很多資料,說可以通過修改 plist 或者 config.xml 來關閉這個效果,如下:
<preference name="WebViewBounce" value="false" />
<preference name="DisallowOverscroll" value="true" />
經過我在 PhoneGap 2.6、PhoneGap 2.9 這兩個版本中測試后,發現都不能夠生效。經過分析,實際上iOS中的PhoneGap項目,只不過是默認初始化一個UIWebView,然后在這個視圖中加在HTML資源,那么我們可以直接使用原生代碼將Bounce禁用。如下所示:
- (void)webViewDidFinishLoad:(UIWebView*)theWebView
{
// Black base color for background matches the native apps
theWebView.backgroundColor = [UIColorblackColor];
[(UIScrollView *)[[theWebView subviews] objectAtIndex:0] setBounces:NO];
return [superwebViewDidFinishLoad:theWebView];
}
再重新編譯之后,可以看到效果了吧 :)
參考資料: