2011-03-29 68 views
1

这是对早期问题的更新。一旦我用一些基于字符串的HTML内容加载一个UIWebView,有没有办法确定视图是否需要滚动来查看整个内容?我正在寻找某种标志或方式来了解内容是否低于UIWebView的底部。确定UIWebView是否需要滚动

提前致谢!

回答

1

你可以继承的UIWebView并使用以下initalizers:

-(id) initWithCoder:(NSCoder *)aDecoder 
{ 
    if(self = [super initWithCoder:aDecoder]) 
    { 
     for (UIView* v in self.subviews){ 
      if ([v isKindOfClass:[UIScrollView class]]){ 
       self.scrollview = (UIScrollView*)v; 
       break; 
      } 
     } 
    } 
    return self; 
} 

- (id) initWithFrame:(CGRect)frame{ 
    if(self = [super initWithFrame:frame]) 
    { 
     for (UIView* v in self.subviews){ 
      if ([v isKindOfClass:[UIScrollView class]]){ 
       self.scrollview = (UIScrollView*)v; 
       break; 
      } 
     } 
    } 
    return self; 
} 

然后有一个属性叫做

@property (nonatomic, retain) UIScrollView *scrollview; 

然后,您可以访问的UIWebView中的滚动视图,可以检查其内容的大小看看它是否大于你的意见大小

+0

这是一个有点工作,好主意。 我做了这样的检查:(w是我的subclassed webview) [w loadHTMLString:content baseURL:url]; \t \t \t [scrollIssue addSubview:w]; \t \t \t \t \t \t \t \t \t的CGRect RECT = w.frame; \t \t \t UIScrollView * sv = [w scrollview]; \t \t \t CGSize rectv = sv.contentSize; 即使需要滚动,它们也总是一样的。怀疑它没有被绘制,有没有办法在检查之前强制它布局? – 2011-03-29 20:47:06

+0

可以尝试调用webview上的layoutSubviews? – JFoulkes 2011-03-30 08:17:17

0

最简单的方法可能是使用Javascript来获取文档高度:

NSInteger height = [[myWebView stringByEvaluatingJavaScriptFromString:@“document.body.scrollHeight”] intValue];

(没有实际测试,所以因人而异,不同的浏览器把文档高度不同的对象和属性,我不记得在Webkit的其中一个作品......看到How to get height of entire document with JavaScript?

如果高度返回大于它需要滚动的UIWebView高度。