javascript - iOS UIWebView 闪烁问题

标签 javascript ios objective-c uiwebview

我在同一屏幕中有一个 UIWebView 和一个滑动手势。当我滑动时,我会重新加载 webview,因为如果不这样做,就不会调用 js。

重新加载只能进行一次,我无法再次滑动

当我删除[self.webview reload]时,滑动效果很好,但 UIWebView 一直闪烁。每次都会跳起来! 每次滑动都需要调用js。

我尝试过这些:

方法一:

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]; 
}

需要帮助!

最佳答案

我发现我的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];
}

关于javascript - iOS UIWebView 闪烁问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39657649/

相关文章:

iOS - 如何预加载键盘?

ios - 安装 CocoaPods 和 AWS Mobile iOS SDK

javascript - 如何在javascript中使用键盘移动对象

javascript - 用 Python 发布交互式科学成果

ios - 您可以发送不唤醒手机的 iOS 推送通知吗?

ios - 如何在相机照片上添加贴纸叠加层

ios - 无法将 Swift 和 Obj-C 库与 Cocoapods 一起使用

javascript - 无效标记重复属性

javascript - 如何在不使用 JS 按下任何键的情况下检测 CAPS LOCK STATUS 是否处于事件状态?

ios - Swift - 在 UITableViewCell 内单击按钮