IOS APP 开发 swift 中 UIWebView 与 javascript 的交互

两个问题:1、JS中怎么调用swift开发的IOS程序的方法或类2、如何重载swift中的UIWebView的各种事件???俺找了好久没找到相关资料,亲们有知道的告诉我一... 两个问题:
1、JS 中怎么调用 swift 开发的 IOS 程序的方法或类

2、如何重载 swift 中的 UIWebView 的各种事件???

俺找了好久没找到相关资料,亲们有知道的告诉我一声呀,如果需要报酬的,加我Q 8663843,感激不尽!
就看在俺帮了那么多人的情况下,帮帮俺吧,刚学 swift 不久,不了解这东东。
以后俺会在其他领域帮助其他人的,比如 .net,jsp,andriod,php 啥的。。。感激不尽。
展开
 我来答
如是我之闻
推荐于2016-07-27 · TA获得超过1237个赞
知道小有建树答主
回答量:1207
采纳率:57%
帮助的人:825万
展开全部

实现委托,重载就行


class ViewController:UIWebViewDelegate  //这样就实现了委托,然后重载方法


 func webView(webView: UIWebView!, shouldStartLoadWithRequest request: NSURLRequest!, navigationType: UIWebViewNavigationType) -> Bool {
        return true
    }
    
    func webViewDidStartLoad(webView: UIWebView!) {
        
    }

func webViewDidFinishLoad(webView: UIWebView!) {
        
        //执行 js放在这里
        stringByEvaluatingJavaScriptFromString("alter('hello')")
    }
追问
我自己找到了方法。用 WKWebView 就行了。

不过,WKWebView 中又没有了 stringByEvaluatingJavaScriptFromString ...真是蛋疼。

UIWebView 可以重载 webView ,通过 request.URL 来实现调用。但是不能返回值。。。

感谢。。。。
追答
WKWebView是 ios8才增加的,方式已经有变化了!
千锋教育
2015-12-13 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部
swift中的UIWebView可以通过WebviewJavaScriptBridge和OVGap跟js交互,这两个库都是让webview与JS建立起一条桥梁,这样就可以相互通信了。
通信例子:

function connectWebViewJavascriptBridge(callback) {
if (window.WebViewJavascriptBridge) {
callback(WebViewJavascriptBridge)
} else {
document.addEventListener('WebViewJavascriptBridgeReady', function() {
callback(WebViewJavascriptBridge)
}, false)
}
}

connectWebViewJavascriptBridge(function(bridge) {
var uniqueId = 1
function log(message, data) {
var log = document.getElementById('log')
var el = document.createElement('div')
el.className = 'logLine'
el.innerHTML = uniqueId++ + '. ' + message + ':<br/>' + JSON.stringify(data)
if (log.children.length) { log.insertBefore(el, log.children[0]) }
else { log.appendChild(el) }
}
bridge.init(function(message, responseCallback) {
log('JS got a message', message)
var data = { 'Javascript Responds':'Wee!' }
log('JS responding with', data)
responseCallback(data)
})

bridge.registerHandler('testJavascriptHandler', function(data, responseCallback) {
log('ObjC called testJavascriptHandler with', data)
var responseData = { 'Javascript Says':'Right back atcha!' }
log('JS responding with', responseData)
responseCallback(responseData)
})
var button = document.getElementById('buttons').appendChild(document.createElement('button'))
button.innerHTML = 'Send message to ObjC'
button.onclick = function(e) {
e.preventDefault()
var data = 'Hello from JS button'
log('JS sending message', data)
bridge.send(data, function(responseData) {
log('JS got response', responseData)
})
}
document.body.appendChild(document.createElement('br'))
var callbackButton = document.getElementById('buttons').appendChild(document.createElement('button'))
callbackButton.innerHTML = 'Fire testObjcCallback'
callbackButton.onclick = function(e) {
e.preventDefault()
log('JS calling handler "testObjcCallback"')
bridge.callHandler('testObjcCallback', {'foo': 'bar'}, function(response) {
log('JS got response', response)
})
}
})
</script>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式