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:

在viewDidAppear:和viewDidDisappear:注册和移除,也出现如上crash,这让人很不好理解。

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];

    [self.webView.configuration.userContentController addScriptMessageHandler:self name:kWebMessageHandlerName];
}
- (void)viewDidDisappear:(BOOL)animated {
    [super viewDidDisappear:animated];

    [self.webView.configuration.userContentController removeScriptMessageHandlerForName:kWebMessageHandlerName];
}

改放在viewWillAppear:和viewWillDisappear就好了

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    [self.webView.configuration.userContentController addScriptMessageHandler:self name:kWebMessageHandlerName];
}
- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];

    [self.webView.configuration.userContentController removeScriptMessageHandlerForName:kWebMessageHandlerName];
}

why ?

  • estimatedProgress

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

  • WKWebView设置圆角、颜色

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

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

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

layer

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Morris_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值