0

Web から画像を読み込んでおり、その下の HTML を UIScrollView に読み込んでいます。これは、tabbarcontroller 内の navigationController 内にあります。サブビューをロードすると、スクロールビューはスクロールしません。私は何が欠けていますか?

ビューDidLoadは次のとおりです。

- (void)viewDidLoad
{
NSURL *imageURL = [NSURL URLWithString:[[self exhibit] image]];

NSData *imageData = [NSData dataWithContentsOfURL:imageURL];
UIImage *image = [UIImage imageWithData:imageData];

if ([[UIScreen mainScreen] bounds].size.width < 600 ) {
    CGSize newSize = CGSizeMake(300.0, 140.6);
    UIGraphicsBeginImageContext(newSize);
    [image drawInRect:CGRectMake(0.0, 0.0, newSize.width, newSize.height)];
    image = UIGraphicsGetImageFromCurrentImageContext();
}

CGRect viewFrame = CGRectMake(0.0, 0.0, [[UIScreen mainScreen] bounds].size.width,
                               ([[UIScreen mainScreen] bounds].size.height - [[self navigationController] navigationBar].bounds.size.height - [[[self tabBarController] tabBar] bounds].size.height));
NSLog(@"%@",NSStringFromCGRect(viewFrame));

UIScrollView *sv = [[UIScrollView alloc] initWithFrame:viewFrame];
[sv setScrollEnabled:YES];
[self setView:sv];

CGRect frame = CGRectMake(0.0, 0.0,image.size.width,image.size.height);
UIImageView *iv = [[UIImageView alloc] initWithFrame:frame];
[iv setImage:image];
[iv setContentMode:UIViewContentModeScaleAspectFit];
[iv setTranslatesAutoresizingMaskIntoConstraints:NO];
[iv setBackgroundColor:[UIColor redColor]];
[sv addSubview:iv];
[self setImageView:iv];

NSDictionary *nameMap = @{@"imageView" : [self imageView]};

NSArray *horizontalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-10-[imageView]-10-|"
                                                                         options:NSLayoutFormatAlignAllCenterX
                                                                         metrics:nil
                                                                           views:nameMap];
[sv addConstraints:horizontalConstraints];

NSArray *verticalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[imageView]"
                                                                         options:NSLayoutFormatAlignAllTop
                                                                         metrics:nil
                                                                           views:nameMap];
[sv addConstraints:verticalConstraints];

UIWebView *wv = [[UIWebView alloc] initWithFrame:CGRectMake(0.0, 150.0, 300.0, 600.0)];
[wv loadHTMLString:[[self exhibit] text] baseURL:nil];
[sv addSubview:wv];
[self setExhibitText:wv];


}

アップデート

次の行を追加しましたが、まだ変更はありません。全然スクロールできません。

[sv setContentSize:CGSizeMake(320.0, 750.0)];
[[wv scrollView] setScrollEnabled:NO];
[[wv scrollView] setBounces:NO];
[wv setUserInteractionEnabled:NO];
4

3 に答える 3

0

ScrollView には、contenSize とゼロ以外のサイズに設定されたフレームの両方が必要です。デフォルトでは:

scrollView.contentSize = CGRectZero;

あなたの場合、コンテンツのサイズは、imageView と webView を組み合わせたものと同等の CGRect にする必要があります。

于 2013-06-21T19:42:02.200 に答える
0

コードで修正しなければならないことがいくつかあります。まず、メイン スレッドで同期的にインターネットからイメージをダウンロードします。メインスレッドでインターネットからデータをロードしないでください。

あなたが抱えているもう1つの問題は、UIWebViewがUIScrollViewに埋め込まれているわけではないということです。UIWebView には独自のスクロールビューがあるため、WebView は UIScrollView へのすべてのタッチをブロックします。Web ビューに静的コンテンツがある場合は、次のことができます。webview.setUserInteractionEnabled = NO

于 2013-06-21T19:42:31.017 に答える