WKWebView使用注意事项

WKWebView使用注意事项

  • customUserAgent

    尽量避免直接覆盖系统的userAgent默认值。

    关于customUserAgent

  • WKScriptMessageHandler

    • addScriptMessageHandler: name:

    重复添加同一个message handler的name的handler对象,会导致crash,比如:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    
    [self.webView.configuration.userContentController addScriptMessageHandler:self name:@"webEvent"];
}
- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self.webView.configuration.userContentController addScriptMessageHandler:self name:@"webEvent"];
}

这种代码错误,重复添加会导致程序crash:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Attempt to add script message handler with name 'toServer' when one already exists.' *** First throw call stack:

  • estimatedProgress

    progress并不是一系列连续的值,可能就只有三个值0.0,0.5,1.0。

  • WKWebView设置圆角、颜色

    通过self.webView.layer.cornerRadius设置圆角是不行的。

    通过这个设置的是webView圆角,但WKWebView上会添加这些view在上面

    WKScrollView 白色
    WKContentView 与WKWebView颜色一致
    WKCompositingView 白色

WKWebView使用注意事项

这些覆盖在webView上面的view的圆角不会随webView被设置而改变。

设置颜色也没用,会被覆盖住没法显现出来。

解决办法:
将webView添加在一个view上,然后设置这个view的 self.webView.layer.cornerRadius是可以的。

上一篇:static方法,属性,代码块初始化顺序和执行顺序


下一篇:Cordova-在现有iOS工程自动化接入Cordova插件