在使用PhoneGap制作App的时候,iOS作为承载App页面的容器的Webview,在手指向下或者向上滑动屏幕时,除了页面本身的滚动外,还经常会看到整体页面底部和屏幕底部被拖动出黑屏
为了防止这一滑动,可以通过修改修改项目中的MainViewController.m,重新设置WebView来实现
1 |
- ( void )webViewDidFinishLoad:(UIWebView*)theWebView
|
2 |
{ |
3 |
// Black base color for background matches the native apps
|
4 |
theWebView.backgroundColor = [UIColorblackColor];
|
5 |
|
6 |
[(UIScrollView *)[[theWebView subviews] objectAtIndex:0] setBounces:NO];
|
7 |
8 |
return [superwebViewDidFinishLoad:theWebView];
|
9 |
} |
在驿驴项目修改的地方是
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #d12f1b }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000; min-height: 13.0px }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px "PingFang SC"; color: #008400 }
p.p5 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #3e1e81 }
p.p6 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #31595d }
span.s1 { }
span.s2 { color: #ba2da2 }
span.s3 { color: #703daa }
span.s4 { color: #000000 }
span.s5 { color: #78492a }
span.s6 { font: 11.0px Menlo; color: #000000 }
span.s7 { font: 11.0px Menlo }
span.s8 { color: #272ad8 }
span.s9 { color: #4f8187 }
span.s10 { color: #31595d }
span.s11 { color: #3e1e81 }
- (void)webViewDidFinishLoad:(UIWebView*)webView
{
VerboseLog(@"webView didFinishLoad (before). state=%d loadCount=%d", _state, _loadCount);
BOOL fireCallback = NO;
// 禁止滚动上下滚动
[(UIScrollView *)[[webView subviews] objectAtIndex:0] setBounces:NO];
switch (_state) {
case STATE_IDLE:
break;
case STATE_WAITING_FOR_LOAD_START:
NSLog(@"CDVWebViewDelegate: Unexpected didFinish while waiting for load start.");
break;
case STATE_WAITING_FOR_LOAD_FINISH:
if (_loadCount == 1) {
fireCallback = YES;
_state = STATE_IDLE;
}
_loadCount -= 1;
break;
case STATE_IOS5_POLLING_FOR_LOAD_START:
[self pollForPageLoadStart:webView];
break;
case STATE_IOS5_POLLING_FOR_LOAD_FINISH:
[self pollForPageLoadFinish:webView];
break;
}
VerboseLog(@"webView didFinishLoad (after). state=%d loadCount=%d fireCallback=%d", _state, _loadCount, fireCallback);
if (fireCallback && [_delegate respondsToSelector:@selector(webViewDidFinishLoad:)]) {
[_delegate webViewDidFinishLoad:webView];
}
}
其实还可以这样
修改config.xml
<preference name="WebViewBounce" value="false" />
<preference name="DisallowOverscroll" value="true" />