2016-09-23 231 views
0

我在同一个屏幕上有一个UIWebView和一个轻扫手势。当我滑动时,我正在重新加载webview,因为如果我不这样做,则不会调用js。iOS UIWebView闪烁问题

重新加载只能工作一次,我无法再次刷卡

当我删除[self.webview reload]刷卡做得很好,但UIWebView保持闪烁。它每次都跳起来! 我每次刷卡时都需要打电话给js。

我尝试这些:

方法1:

when loading webview: 
self.webview.alpha = 0; 

- (void)webViewDidFinishLoad:(UIWebView *)webView { 

    [UIView beginAnimations:nil context:nil];  
    [UIView setAnimationDuration:0.30];  
    self.webview.alpha = 1; 
    [UIView commitAnimations]; 
} 

方法2:

- (void)webViewDidFinishLoad:(UIWebView *)webView { 

    [self.webview setOpaque:NO]; 
    self.webview.backgroundColor = [UIColor clearColor]; 
    } 

方法3:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    [self.webview loadHTMLString:@"<html><body style=\"background-color:black;\"></body></html>" baseURL:nil];  

    [self performSelector:@selector(loadWebview) withObject:nil afterDelay:0.1]; 
} 
-(void)loadWebview { 

    self.webview.delegate = self; 
    self.webview.scrollView.delegate = self; 
    self.webview.scrollView.bounces = NO; 
    self.webview.scrollView.scrollsToTop = NO; 
    [self.view addSubview:self.webview]; 
    pathToHtml = [[NSBundle mainBundle] pathForResource:@"mypath" ofType:@"html"]; 
    NSString* appHtml = [NSString stringWithContentsOfFile:pathToHtml encoding:NSUTF8StringEncoding error:nil]; 
    NSURL *baseURL = [NSURL fileURLWithPath:pathToHtml]; 

    [self.webview loadHTMLString:appHtml baseURL:baseURL]; 
} 

需要帮助!

回答

0

我发现我在webViewDidFinishLoad过这样的:

//Make the page fit to view. THIS IS BAD 
    CGRect webviewBound = self. webview.bounds; 
    webviewBound.size.height = self. webview.scrollView.contentSize.height; 
    self. webview.bounds = webviewBound; 

所以我删除,并补充说:

[self.webview.scrollView setContentSize: CGSizeMake(self.webview.frame.size.width, self.webview.scrollView.contentSize.height)]; 
    self.webview.scrollView.delegate = self; 

我加入这viewDidLoad因为我有灰色背景:

//Removes the shadow from the webview i.e., "grey background" 
if ([[self.webview subviews] count] > 0) 
{ 
    for (UIView* shadowView in [[[self.webview subviews] objectAtIndex:0] subviews]) 
    { 
     [shadowView setHidden:YES]; 
    } 

    // unhide the last view so it is visible again because it has the content 
    [[[[[self.webview subviews] objectAtIndex:0] subviews] lastObject] setHidden:NO]; 
}