ios中的多个webview

时间:2013-01-12 08:51:12

标签: iphone ios objective-c ipad

如何使用三个网页浏览来显示多个html网页在滚动视图中显示50个。任何示例代码请参考我。我目前的代码就是这个。它导致内存泄漏,当然我知道它是一个愚蠢的。我坚持了2天以上。请帮帮我。

-(void)AddWebviews
{
    [m_CtrlActivity stopAnimating];
    m_CtrlLblProgress.hidden=YES;
    int divisor = WebViewAddCount % 3;
    MagazineAppDelegate     *appdelegate              = (MagazineAppDelegate *)[[UIApplication sharedApplication]delegate];

    IstructPageDetails *objPageDetails=[appdelegate.m_mutarrPageDetails objectAtIndex:WebViewAddCount];
    if (divisor==0)
    {
         m_CtrlWebViewone=[[UIWebView alloc]initWithFrame:CGRectMake(768*WebViewAddCount,0,768,1024)];
        // m_CtrlWebView.scrollView.delegate=self;
        // m_CtrlWebView.delegate=self;
        NSString *m_strMagazineFolder=[[GlobalFunctions GetCachesFolder]stringByAppendingPathComponent:MAGAZINE_FOLDER_NAME];
        NSString *finalpath=[NSString stringWithFormat:@"%@/%@/%@/%@",m_strMagazineFolder,appdelegate.m_StrSelectedMagazineUrl,objPageDetails.m_strFolderName, objPageDetails.m_strPageName ];
        NSURL *url = [NSURL fileURLWithPath:finalpath isDirectory:NO];

        [m_CtrlWebViewone loadRequest:[NSURLRequest requestWithURL:url]];

        m_CtrlWebViewone.scrollView.pagingEnabled=YES;
        m_CtrlWebViewone.scrollView.bounces=NO;
        m_CtrlWebViewone.scalesPageToFit=YES;
        m_CtrlWebViewone.backgroundColor=[UIColor clearColor];


        self.m_CtrlScrollview.pagingEnabled=YES;
        [self.m_CtrlScrollview addSubview:m_CtrlWebViewone];
        [m_CtrlWebViewone release];

    }
    else if(divisor==1)
    {
         m_CtrlWebViewtwo=[[UIWebView alloc]initWithFrame:CGRectMake(768*WebViewAddCount,0,768,1024)];
        // m_CtrlWebView.scrollView.delegate=self;
        // m_CtrlWebView.delegate=self;
        NSString *m_strMagazineFolder=[[GlobalFunctions GetCachesFolder]stringByAppendingPathComponent:MAGAZINE_FOLDER_NAME];
        NSString *finalpath=[NSString stringWithFormat:@"%@/%@/%@/%@",m_strMagazineFolder,appdelegate.m_StrSelectedMagazineUrl,objPageDetails.m_strFolderName, objPageDetails.m_strPageName ];
        NSURL *url = [NSURL fileURLWithPath:finalpath isDirectory:NO];

        [m_CtrlWebViewtwo loadRequest:[NSURLRequest requestWithURL:url]];

        m_CtrlWebViewtwo.scrollView.pagingEnabled=YES;
        m_CtrlWebViewtwo.scrollView.bounces=NO;
        m_CtrlWebViewtwo.scalesPageToFit=YES;
        m_CtrlWebViewtwo.backgroundColor=[UIColor clearColor];

        self.m_CtrlScrollview.pagingEnabled=YES;
        [self.m_CtrlScrollview addSubview:m_CtrlWebViewtwo];
        [m_CtrlWebViewtwo release];
    }
    else if(divisor==2)
    {
         m_CtrlWebViewthree=[[UIWebView alloc]initWithFrame:CGRectMake(768*WebViewAddCount,0,768,1024)];
        // m_CtrlWebView.scrollView.delegate=self;
        // m_CtrlWebView.delegate=self;
        NSString *m_strMagazineFolder=[[GlobalFunctions GetCachesFolder]stringByAppendingPathComponent:MAGAZINE_FOLDER_NAME];
        NSString *finalpath=[NSString stringWithFormat:@"%@/%@/%@/%@",m_strMagazineFolder,appdelegate.m_StrSelectedMagazineUrl,objPageDetails.m_strFolderName, objPageDetails.m_strPageName ];
        NSURL *url = [NSURL fileURLWithPath:finalpath isDirectory:NO];

        [m_CtrlWebViewthree loadRequest:[NSURLRequest requestWithURL:url]];

        m_CtrlWebViewthree.scrollView.pagingEnabled=YES;
        m_CtrlWebViewthree.scrollView.bounces=NO;
        m_CtrlWebViewthree.scalesPageToFit=YES;
        m_CtrlWebViewthree.backgroundColor=[UIColor clearColor];

        self.m_CtrlScrollview.pagingEnabled=YES;
        [self.m_CtrlScrollview addSubview:m_CtrlWebViewthree];
        [m_CtrlWebViewthree release];
    }

    WebViewAddCount++;


    [self.m_CtrlScrollview setContentSize:CGSizeMake(WebViewAddCount*768, 1004)];
}

2 个答案:

答案 0 :(得分:0)

UIWebView Class Reference中所述:

  

重要提示:您不应该嵌入UIWebView或UITableView对象   UIScrollView对象。如果这样做,可能会导致意外行为   因为两个对象的触摸事件可能混淆错误   处理

答案 1 :(得分:0)

一次在scrollview上添加多个webview并不是一个好主意,这可能会导致内存泄漏然后应用程序崩溃。所以最好的方法是在必要时加载webview。我建议你有两个选项。 ..

1)Apple有一个名为UIPageviewController的框架。你只需要将转换类型UIPageViewControllerTransitionStylePageCurl控件更改为UIPageViewControllerTransitionStylePageSwipe。

2)使用Bakers framework

ARC和非ARC代码均可用。

希望它可以帮助你:)