Ios UIWebView';s UIScrollView子视图可以滚动,但可以反弹到帧,而不显示垂直滚动指示器 更新-解决方案2
第一个解决方案(如下)仅适用于iOS 7,而不适用于iOS 6或iOS 5。因此,另一种方法是在出现任何滚动运动时,使用适用于iOS 7、6和5的Ios UIWebView';s UIScrollView子视图可以滚动,但可以反弹到帧,而不显示垂直滚动指示器 更新-解决方案2,ios,uiwebview,uiscrollview,uiimagepickercontroller,Ios,Uiwebview,Uiscrollview,Uiimagepickercontroller,第一个解决方案(如下)仅适用于iOS 7,而不适用于iOS 6或iOS 5。因此,另一种方法是在出现任何滚动运动时,使用适用于iOS 7、6和5的-(void)scrollViewDidScroll:(UIScrollView*)scrollView更新滚动视图的内容大小 在-(void)scrollViewDidScroll:(UIScrollView*)scrollView中,我记录了最高的内容大小高度 if (_currentWebPageContentHeight < [[_web
-(void)scrollViewDidScroll:(UIScrollView*)scrollView更新滚动视图的内容大小
在-(void)scrollViewDidScroll:(UIScrollView*)scrollView
中,我记录了最高的内容大小高度
if (_currentWebPageContentHeight < [[_webView scrollView] contentSize].height) {
_currentWebPageContentHeight = [[_webView scrollView] contentSize].height;
}
原始问题
使用Xcode 5、iOS 7、iPhone 5,无nib文件,无需手动添加自动布局约束
在一个项目中,有一个UIWebView,其中左下角有一个按钮,该按钮用于将照片从iPhone相册或相机上传到测试网站
当我试图从相册上载照片时,单击选择
按钮时,会调用方法-(void)imagePickerController:didFinishPickingMediaWithInfo:
,当此方法完成时,UIImagePickerController会随着动画消失,并加载所选照片。但是UIWebView的UIScrollView子视图虽然可以向下滚动到当前网页的末尾,但会一直反弹到UIWebView的可见框架(origin.x=0,origin.y=64,size.width=320,size.height=568-64),垂直滚动指示器也看不到
UIWebView中嵌入的UIScrollView的框架/边界是正确的,我在以下语句的^{}中检查它:
// At the end of the -(void)imagePickerController:didFinishPickingMediaWithInfo:
[imagePickerControllerInstance dismissViewControllerAnimated:YES completion:^{}];
我还强迫这些值是正确的。但不会改变上述意外行为
[[webView scrollView] setShowsVerticalScrollIndicator:YES];
[[webView scrollView] setScrollIndicatorInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
[[webView scrollView] setContentSize:(CGSizeMake([[UIScreen mainScreen] bounds].size.width, [[UIScreen mainScreen] bounds].size.height - 64))];
关于上面使用的数字:
- 320是iPhone 5的宽度(以点为单位)
- 568是iPhone5的高度单位
- 64是状态栏和导航栏的点高度
谁能解决这个问题?谢谢大家! 您应该将contentsize:
设置为实际内容大小,而不是可见帧大小。也就是说,如果您的内容高达1000px,您应该设置contentsize:CGSizeMake(宽度,1000)
。这样,您可以告诉UIScrollView
它应该滚动以显示1000px高的内容。如果将UIScrollView
的内容大小设置为其帧大小,则不会执行滚动,也不会显示滚动指示器(仅显示弹跳效果)。设置为@gWiz,那么如何获取实际内容大小?对于WebView,我使用以下代码:CGFloat contentHeight=[[detailWebText stringByEvaluatingJavaScriptFromString:@“document.body.offsetight+document.body.offsetTop;”]floatValue];
Hi@gWiz,detailWebText的类是什么?
Hi@gWiz,我这样称呼它:CGFloat-currentContentHeight=[[webView-stringByEvaluatingJavaScriptFromString:@“document.body.offsetight+document.body.offsetTop;”]floatValue]
但它没有给出正确的内容高度。此时您的webView加载完成了吗?可能是您还需要在-(void)webViewDidFinishLoad:(UIWebView*)webView中运行此操作
[[webView scrollView] setShowsVerticalScrollIndicator:YES];
[[webView scrollView] setScrollIndicatorInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
[[webView scrollView] setContentSize:(CGSizeMake([[UIScreen mainScreen] bounds].size.width, [[UIScreen mainScreen] bounds].size.height - 64))];