我在UIWebView
实例中添加UITableiViewCell
个实例作为子视图,视图的层次结构如下:
UIView->UITableView->UITableiViewCell-> UIWebView
问题是当我在Web视图中垂直滚动时,父表视图没有滚动!我不想设置UIWebView
的属性userInteractionEnabled = NO
,我只想在水平方向滚动我的网页视图。
答案 0 :(得分:0)
您应该正确设置contentSize
的属性。
webView.scrollView.contentSize = CGSizeMake(PREDEFEINED_WIDTH, HEIGHT_OF_YOUR_TABLE_CELL);
答案 1 :(得分:0)
如果要加载本地html文本,可以使用以下代码禁用垂直滚动。
<html>
<head>
<style type=\"text/css\"> \n"
"body {overflow-x: scroll;overflow-y: hidden;}\n"
"</style>
</head>
<body>
//your content
</body>
</html>.
或者将Webview的框架大小设置为内容大小。基于UIwebview内容大小设置UITableview的框架有点困难。您仍然可以禁用Scrollview滚动。
UIView * v = [[webView subviews] lastObject];
if([v isKindOfClass:[UIScrollView class] ]) {
if ([v respondsToSelector:@selector(setScrollEnabled]) {
[v setScrollEnabled:NO];
}
if ([v respondsToSelector:@selector(bounces)]) {
[v bounces:NO];
}
}
答案 2 :(得分:0)
您应该将UIWebView子类化,并使用自定义委托将scrollViewDidScroll事件转发回父视图。
在MyWebView.h中
@protocol MyWebViewScrollDelegate <NSObject>
-(void) webViewDidScroll:(UIWebView *)theWebView;
@end
@interface MyWebView : UIWebView
@property (nonatomic, weak) id<MyWebViewScrollDelegate> scrollDelegate;
@end
MyWebView.m中的
@implementation MyWebView
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
[super scrollViewDidScroll:scrollView];
if (_scrollDelegate && [_scrollDelegate respondsToSelector:@selector(webViewDidScroll:)]) {
[_scrollDelegate webViewDidScroll:scrollView];
}
@end
然后在您的父视图中
MyWebView *v = [[MyWebView alloc]init];
v.scrollDelegate = self;
和
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
//do whatever you want with the scrollview
}