我在UITableiViewCell
实例中添加了一个UIWebView
实例作为子视图,视图的层次结构如下所示:
UIView->UITableView->UITableiViewCell-> UIWebView
问题是当我在 Web 视图中垂直滚动时,父表视图没有滚动!我不想设置UIWebView
的属性userInteractionEnabled = NO
,我只想水平滚动我的 Web 视图。
你可以帮我吗?
您应该正确设置contentSize
的属性。
webView.scrollView.contentSize = CGSizeMake(PREDEFEINED_WIDTH, HEIGHT_OF_YOUR_TABLE_CELL);
您应该使用自定义委托对 UIWebView 进行子类化,并将 scrollViewDidScroll 事件中继回父视图。
in MyWebView.h
@protocol MyWebViewScrollDelegate <NSObject>
-(void) webViewDidScroll:(UIWebView *)theWebView;
@end
@interface MyWebView : UIWebView
@property (nonatomic, weak) id<MyWebViewScrollDelegate> scrollDelegate;
@end
in 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
}
如果要加载本地 html 文本,可以使用以下代码禁用垂直滚动。
<html>
<head>
<style type="text/css"> n"
"body {overflow-x: scroll;overflow-y: hidden;}n"
"</style>
</head>
<body>
//your content
</body>
</html>.
或者将 Web 视图的框架大小设置为"内容大小"。根据UIwebview内容大小设置UITableview的框架有点困难。您仍然可以禁用滚动视图滚动。
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];
}
}