This topic created in 3688 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
 |
|
这个问题点一下 warning 就会帮你修正吧
|
 |
|
好久没用了可能记错, swift 里的 selector 不是用:#selector()这样的写法吗?
|
 |
|
#selector(SettingViewController.onClose)
|
 |
|
楼上+1 ,并且 Xcode 应该会提示修改方法。
|
 |
|
@ loveuqian @ happyeveryday @ Shvier 这已经是 XCODE 提示并修改后的结果了。 @ wudb webView.performSelector(#selector("_setApplicationNameForUserAgent:"), withObject: "myua") 这样会直接 failed
|
 |
|
webView 好像有个 customUserAgent 属性,可以用嘛
|
 |
|
刚刚手动 check 了一下,声明了一个叫做 test 的方法, webView?.perform(#selector(DHNewsDetailView.test)); 会出现警告'Unmanaged<AnyObject>?' is unused ,这是因为 performSelector 方法会返回一个这个类型的值,但是没有使用,所以会 warning ,如果你用 wkWebView loadRequest 的时候应该也会出现类似的警告,我不知道正确的解决方式,我的写法是 let _去接收这个变量。
|
 |
|
iOS8 or before :
UserDefaults.standard.register(defaults: ["UserAgent": "myua"])
iOS9 or later :
webView.configuration.applicationNameForUserAgent = "myua"
这样就行了,建议尽量别去调用私有 API
|
 |
|
补充一下, UserDefaults 那个方法需要自己把 UA 拼好哟,我的做法是新建个空白 WebView 然后调用 JS 取默认的 UA ,在结尾插入自定义的字段
|
 |
|
你调这方法设置 UserAgent 不怕被拒吗?
|
 |
|
@ heat 你没看清楚哦,括号内是类名.func 的,没有双引号
|