This topic created in 3513 days ago, the information mentioned may be changed or developed.
我的环境是 swift2.3 。需要给 WKwebview 一个 UA ,用如下写法:
webView.performSelector(Selector("_setApplicationNameForUserAgent:"), withObject: "myua")
到是可以 work ,但是一直弹一条 warning 有点恶心:
No method declared with Objective-C selector '_setApplicationNameForUserAgent:'
GOOGLE搜了好久,大部分都是老版本的写法,或者根本不work,请问下在 swift2.3 里这个语句要如何写呢?
12 replies • 2016-09-29 09:15:41 +08:00
 |
|
1
loveuqian Sep 28, 2016 via iPhone
这个问题点一下 warning 就会帮你修正吧
|
 |
|
2
happyeveryday Sep 28, 2016
好久没用了可能记错, swift 里的 selector 不是用:#selector()这样的写法吗?
|
 |
|
3
wudb Sep 28, 2016
#selector(SettingViewController.onClose)
|
 |
|
4
Shvier Sep 28, 2016
楼上+1 ,并且 Xcode 应该会提示修改方法。
|
 |
|
5
heat Sep 28, 2016
@ loveuqian @ happyeveryday @ Shvier 这已经是 XCODE 提示并修改后的结果了。 @ wudb webView.performSelector(#selector("_setApplicationNameForUserAgent:"), withObject: "myua") 这样会直接 failed
|
 |
|
6
loveuqian Sep 28, 2016
webView 好像有个 customUserAgent 属性,可以用嘛
|
 |
|
7
Shvier Sep 28, 2016
刚刚手动 check 了一下,声明了一个叫做 test 的方法, webView?.perform(#selector(DHNewsDetailView.test)); 会出现警告'Unmanaged<AnyObject>?' is unused ,这是因为 performSelector 方法会返回一个这个类型的值,但是没有使用,所以会 warning ,如果你用 wkWebView loadRequest 的时候应该也会出现类似的警告,我不知道正确的解决方式,我的写法是 let _去接收这个变量。
|
 |
|
8
sunhr Sep 28, 2016
iOS8 or before :
UserDefaults.standard.register(defaults: ["UserAgent": "myua"])
iOS9 or later :
webView.configuration.applicationNameForUserAgent = "myua"
这样就行了,建议尽量别去调用私有 API
|
 |
|
9
sunhr Sep 28, 2016
补充一下, UserDefaults 那个方法需要自己把 UA 拼好哟,我的做法是新建个空白 WebView 然后调用 JS 取默认的 UA ,在结尾插入自定义的字段
|
 |
|
11
heat Sep 28, 2016
|
 |
|
12
wudb Sep 29, 2016
@ heat 你没看清楚哦,括号内是类名.func 的,没有双引号
|