Problems displaying UIWebView on iPad

Discussion in 'iOS Programming' started by ivan1988.gs, Jun 13, 2010.

  1. ivan1988.gs macrumors newbie

    Joined:
    Jun 13, 2010
    #1
    Hello,

    I am developing a native app that loads a local WebView inside a View. The app is based on the Apple's PageControl example.

    The problem is that if i built the app for the iPhone it's ok... I can swipe left an right and load html content from the webview, but if i built for the iPad, nothing loads.. just a white screen. No errors, no warnings...

    I have debugged and have no idea what's happening. Any idea? Lot of thanks


    This is my AppDelegate.m
    Code:
    -(void)applicationDidFinishLaunching:(UIApplication *)application {
        // view controllers are created lazily
        // in the meantime, load the array with placeholders which will be replaced on demand
        NSMutableArray *controllers = [[NSMutableArray alloc] init];
        for (unsigned i = 0; i < kNumberOfPages; i++) {
            [controllers addObject:[NSNull null]];
        }
        self.viewControllers = controllers;
        [controllers release];
    	
        // a page is the width of the scroll view
        scrollView.pagingEnabled = YES;
    	
        scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * kNumberOfPages, scrollView.frame.size.height);
        scrollView.showsHorizontalScrollIndicator = NO;
        scrollView.showsVerticalScrollIndicator = NO;
        scrollView.scrollsToTop = NO;
        scrollView.delegate = self;
    	
        pageControl.numberOfPages = kNumberOfPages;
        pageControl.currentPage = 0;
    	
        // pages are created on demand
        // load the visible page
        // load the page on either side to avoid flashes when the user starts scrolling
        [self loadScrollViewWithPage:0];
        [self loadScrollViewWithPage:1];
    }
    
    - (void)loadScrollViewWithPage:(int)page {
        if (page < 0) return;
        if (page >= kNumberOfPages) return;
    	
        // replace the placeholder if necessary
        MyViewController *controller = [viewControllers objectAtIndex:page];
        if ((NSNull *)controller == [NSNull null]) {
            controller = [[MyViewController alloc] initWithPageNumber:page];
            [viewControllers replaceObjectAtIndex:page withObject:controller];
            [controller release];
        }
    	
        // add the controller's view to the scroll view
        if (nil == controller.view.superview) {
            CGRect frame = scrollView.frame;
            frame.origin.x = frame.size.width * page;
            frame.origin.y = 0;
            controller.view.frame = frame;
            [scrollView addSubview:controller.view];
        }
    }
    
    - (void)scrollViewDidScroll:(UIScrollView *)sender {
        // We don't want a "feedback loop" between the UIPageControl and the scroll delegate in
        // which a scroll event generated from the user hitting the page control triggers updates from
        // the delegate method. We use a boolean to disable the delegate logic when the page control is used.
        if (pageControlUsed) {
            // do nothing - the scroll was initiated from the page control, not the user dragging
            return;
        }
        
        // Switch the indicator when more than 50% of the previous/next page is visible
        CGFloat pageWidth = scrollView.frame.size.width;
        int page = floor((scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
        pageControl.currentPage = page;
    	
        // load the visible page and the page on either side of it (to avoid flashes when the user starts scrolling)
        [self loadScrollViewWithPage:page - 1];
        [self loadScrollViewWithPage:page];
        [self loadScrollViewWithPage:page + 1];
    	
        // A possible optimization would be to unload the views+controllers which are no longer visible
    }
    
    // At the begin of scroll dragging, reset the boolean used when scrolls originate from the UIPageControl
    - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
        pageControlUsed = NO;
    }
    
    // At the end of scroll animation, reset the boolean used when scrolls originate from the UIPageControl
    - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
        pageControlUsed = NO;
    }
    
    - (IBAction)changePage:(id)sender {
        int page = pageControl.currentPage;
        
        // load the visible page and the page on either side of it (to avoid flashes when the user starts scrolling)
        [self loadScrollViewWithPage:page - 1];
        [self loadScrollViewWithPage:page];
        [self loadScrollViewWithPage:page + 1];
        
        // update the scroll view to the appropriate page
        CGRect frame = scrollView.frame;
        frame.origin.x = frame.size.width * page;
        frame.origin.y = 0;
        [scrollView scrollRectToVisible:frame animated:YES];
        
        // Set the boolean used when scrolls originate from the UIPageControl. See scrollViewDidScroll: above.
        pageControlUsed = YES;
    }
    
    And my ViewController.m
    Code:
    - (id)initWithPageNumber:(int)page {
        if (self = [super initWithNibName:@"MyViewController" bundle:nil]) {
            pageNumber = page;
        }
        return self;
    }
    
    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
        // Overriden to allow any orientation.
        return YES;
    }
    
    
    - (void)didReceiveMemoryWarning {
        // Releases the view if it doesn't have a superview.
        [super didReceiveMemoryWarning];
        
        // Release any cached data, images, etc that aren't in use.
    }
    
    
    - (void)viewDidUnload {
        [super viewDidUnload];
        // Release any retained subviews of the main view.
        // e.g. self.myOutlet = nil;
    }
    
    // Set the label and background color when the view has finished loading.
    - (void)viewDidLoad {
    	[super viewDidLoad];
    	
    	[contenedorHTML loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"pagina_%d", pageNumber] ofType:@"html"] isDirectory:NO]]];
    	[self.view addSubview:contenedorHTML];
    }
    
     
  2. naal1 macrumors newbie

    Joined:
    Jul 14, 2010
    #2
    Ipad WebView with Local HTML & Pages

    Heay.. friend,

    Can you plz help me out.. i m also making IPAD apps from local folder, But didn't get any success on the same can you please help me how to make Local html Webview apps. ?

    Thanks in adv
     

Share This Page