Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIWebView';s UIScrollView子视图可以滚动,但可以反弹到帧,而不显示垂直滚动指示器 更新-解决方案2_Ios_Uiwebview_Uiscrollview_Uiimagepickercontroller - Fatal编程技术网

Ios UIWebView';s UIScrollView子视图可以滚动,但可以反弹到帧,而不显示垂直滚动指示器 更新-解决方案2

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

第一个解决方案(如下)仅适用于iOS 7,而不适用于iOS 6或iOS 5。因此,另一种方法是在出现任何滚动运动时,使用适用于iOS 7、6和5的
-(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))];