zoukankan      html  css  js  c++  java
  • swift-初探webView与JS交互

    公司接下来的项目需要用swift内嵌h5来实现, 以前没有做过swift项目, 现在慢慢将所学的一点一滴记录一下 一个是怕自己忘了- =, 再就是希望大家看到能帮助我哈哈哈
    前几天想要直接用swift上手- =发现连初始化什么的都给忘记了, 又乖乖回去先用OC简单的做了一个webView的界面
    效果如下:


    接下来, 我就一点点的把OC的代码用swift编写了

    import UIKit
    //要导入JavaScriptCore.framework库
    import JavaScriptCore
    
    //在此签订UIWebViewDelegate协议
    class ViewController: UIViewController, UIWebViewDelegate {
        //输入框
        var textFiled = UITextField.init()
        var webView = UIWebView.init()
    
    
        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view, typically from a nib.   
    
            //初始化textfield
            textFiled.frame = CGRectMake(20, 40, 260, 30)
            textFiled.borderStyle = .Bezel
            textFiled.clearButtonMode = .WhileEditing
            textFiled.backgroundColor = UIColor.whiteColor()
            self.view.addSubview(textFiled)
    
            //开始运行btn
            let btn = UIButton.init(frame: CGRectMake(290, 40, 30, 30))
            btn.setTitle("GO", forState: UIControlState.Normal)
            btn.setTitleColor(UIColor.blueColor(), forState: UIControlState.Normal)
            btn.addTarget(self, action: #selector(ViewController.btnAction(_:)), forControlEvents: UIControlEvents.TouchUpInside)
            self.view.addSubview(btn)
    
            //后退btn
            let backBtn = UIButton.init(frame: CGRectMake(btn.frame.origin.x + 40, btn.frame.origin.y, 30, 30))
            backBtn.setTitle("<", forState: UIControlState.Normal)
            backBtn.setTitleColor(UIColor.blueColor(), forState: UIControlState.Normal)
            backBtn.addTarget(self, action: #selector(ViewController.backBtnAction(_:)), forControlEvents: UIControlEvents.TouchUpInside)
            self.view.addSubview(backBtn)
    
            //前进btn
            let forwardBtn = UIButton.init(frame: CGRectMake(backBtn.frame.origin.x + 40, backBtn.frame.origin.y, 30, 30))
            forwardBtn.setTitle(">", forState: UIControlState.Normal)
            forwardBtn.setTitleColor(UIColor.blueColor(), forState: UIControlState.Normal)
            forwardBtn.addTarget(self, action: #selector(ViewController.forwardBtnAction(_:)), forControlEvents: UIControlEvents.TouchUpInside)
            self.view.addSubview(forwardBtn)
    
    
            webView.frame = CGRectMake(0, 80, UIScreen.mainScreen().bounds.width, UIScreen.mainScreen().bounds.height - 80)
            webView.backgroundColor = UIColor.lightGrayColor()
            self.view.addSubview(webView)
    
    
            //设置代理(不要忘记!如果不设置就无法调用webView的代理方法)
            webView.delegate = self
    
    
        }
        /**
         * parameters就是参数,return type是返回类型
    
           func <#name#>(<#parameters#>) -> <#return type#> {
                 <#function body#>
            }
        */
        func btnAction(btn:UIButton){
            //加载textfield中的网址
            let request = NSURLRequest.init(URL: NSURL.init(string: "http://" + textFiled.text!)!)
            webView.loadRequest(request)
    
        }
    
        func backBtnAction(backBtn:UIButton) {
            webView.goBack()
        }
    
        func forwardBtnAction(forwardBtn:UIButton)  {
            webView.goForward()
        }
    
        /**
          *网页加载完成调用此方法
          */
        func webViewDidFinishLoad(webView: UIWebView) {
            //调用提示框方法
            setAlertShow()
    
        }
    
        //显示提示框
        func setAlertShow() {
    
            let jsString = String(format:"alert(123)")
            print(jsString)
            //交互
            webView.stringByEvaluatingJavaScriptFromString(jsString)
    
        }

    运行效果如下:


    swift版webView.gif
  • 相关阅读:
    MySql存储过程—2、第一个MySql存储过程的建立
    MYSQL 存储过程1、SQL存储过程的基础知识
    [转]忍无可忍 献上一曲维族歌曲 《我们的客户是花园》(吐槽)
    由硬盘供电不稳、数据线品质差造成的蓝屏
    music Elton John
    一个人在艰苦中能雄起,那是能力和毅力,一个人在安逸中能雄起,那是自觉和自律。
    安装VS2012出问题后,反复重启电脑。
    山寨、低端、劣质的机箱前置面板的悲剧。
    SQL Server Management Studio (SSMS) 清除登录记录
    DataTable 分批处理,每批处理4行
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/7115417.html
Copyright © 2011-2022 走看看