2016-09-23 174 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]; 
}