如何使用三个网页浏览来显示多个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)];
}
答案 0 :(得分:0)
如UIWebView Class Reference中所述:
重要提示:您不应该嵌入UIWebView或UITableView对象 UIScrollView对象。如果这样做,可能会导致意外行为 因为两个对象的触摸事件可能混淆错误 处理
答案 1 :(得分:0)
一次在scrollview上添加多个webview并不是一个好主意,这可能会导致内存泄漏然后应用程序崩溃。所以最好的方法是在必要时加载webview。我建议你有两个选项。 ..
1)Apple有一个名为UIPageviewController的框架。你只需要将转换类型UIPageViewControllerTransitionStylePageCurl控件更改为UIPageViewControllerTransitionStylePageSwipe。
2)使用Bakers framework。
ARC和非ARC代码均可用。
希望它可以帮助你:)