首先 遵循代理  引入头文件

#import <WebKit/WebKit.h>

第一种情况  直接跳转  了解不含特殊字符的

import UIKit

class NewsViewController: UIViewController,WKNavigationDelegate,UIScrollViewDelegate {

var webView : WKWebView = WKWebView()

override func viewWillAppear(animated: Bool) {

super.viewWillAppear(animated)

self.navigationController?.navigationBar.hidden = false

}

override func viewWillDisappear(animated: Bool) {

super.viewWillDisappear(animated)

self.webView.scrollView.delegate = nil

}

override func viewDidLoad() {

super.viewDidLoad()

self.title = "高速新闻"

var webview : WKWebView = WKWebView.init(frame: CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT))

webview.navigationDelegate = self

webview.scrollView.delegate = self

self.view.addSubview(webview)

let url = NSURL(string: "http://write.blog.csdn.net/postedit?ticket=ST-18508-huyngj2vPrUyzINKQTQb-passport.csdn.net")

let request = NSURLRequest(URL: url!)

webview.loadRequest(request)

self.webView = webview

// 打开左划回退功能:

self.webView.allowsBackForwardNavigationGestures = true

}

func webView(webView: WKWebView, didFinishNavigation navigation: WKNavigation!) {

NSUserDefaults.standardUserDefaults().setInteger(0, forKey: "WebKitCacheModelPreferenceKey")

NSUserDefaults.standardUserDefaults().setBool(false, forKey: "WebKitDiskImageCacheEnabled")

NSUserDefaults.standardUserDefaults().setBool(false, forKey: "WebKitOfflineWebApplicationCacheEnabled")

NSUserDefaults.standardUserDefaults().synchronize()

}

func scrollViewDidScroll(scrollView: UIScrollView) {

if (scrollView.contentOffset.y > 100) {

self.navigationItem.title = "高速新闻"

} else {

self.navigationItem.title = "高速新闻"

}

}

override func didReceiveMemoryWarning() {

super.didReceiveMemoryWarning()

// Dispose of any resources that can be recreated.

}

/*

// MARK: - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

// Get the new view controller using segue.destinationViewController.

// Pass the selected object to the new view controller.

}

*/

}

第二种情况   链接中含有特殊字符的 例如汉字

import UIKit

class HighSpeedRoadVC: UIViewController,WKNavigationDelegate,UIScrollViewDelegate {

var webView : WKWebView = WKWebView()

//    var web : UIWebView = UIWebView()

override func viewWillAppear(animated: Bool) {

super.viewWillAppear(animated)

self.navigationController?.navigationBar.hidden = false

}

override func viewWillDisappear(animated: Bool) {

super.viewWillDisappear(animated)

self.webView.scrollView.delegate = nil

}

override func viewDidLoad() {

super.viewDidLoad()

self.title = "河南高速路况"

var webview : WKWebView = WKWebView.init(frame: CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT))

webview.navigationDelegate = self

webview.scrollView.delegate = self

self.view.addSubview(webview)

let baseUrl = "http://m.weibo.cn/k/"

let str = "河南高速路况?from=feed"  //此处是链接中含的特殊字符

let utf8Str = str.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())

let url = NSURL(string: baseUrl + utf8Str!)

let request = NSURLRequest(URL: url!)

webview.loadRequest(request)

self.webView = webview

// 打开左划回退功能:

self.webView.allowsBackForwardNavigationGestures = true

}

func webView(webView: WKWebView, didFinishNavigation navigation: WKNavigation!) {

NSUserDefaults.standardUserDefaults().setInteger(0, forKey: "WebKitCacheModelPreferenceKey")

NSUserDefaults.standardUserDefaults().setBool(false, forKey: "WebKitDiskImageCacheEnabled")

NSUserDefaults.standardUserDefaults().setBool(false, forKey: "WebKitOfflineWebApplicationCacheEnabled")

NSUserDefaults.standardUserDefaults().synchronize()

}

func scrollViewDidScroll(scrollView: UIScrollView) {

if (scrollView.contentOffset.y > 100) {

self.navigationItem.title = "河南高速路况"

} else {

self.navigationItem.title = "河南高速路况"

}

}

func webView(webView: WKWebView, didFailNavigation navigation: WKNavigation!, withError error: NSError) {

print("error:\(error)")

}

override func didReceiveMemoryWarning() {

super.didReceiveMemoryWarning()

// Dispose of any resources that can be recreated.

}

/*

// MARK: - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

// Get the new view controller using segue.destinationViewController.

// Pass the selected object to the new view controller.

}

*/

}

swift 中跳转web view的两种方法相关推荐

  1. Swift中实现用户输入防抖动的两种方法

    功能需求 用户通过App搜索服务器中的数据,当用户在搜索框中输入关键字时,要求App将关键字通过网络连接传递到服务器接口,并返回服务器的搜索结果. 这里有个问题:假设用户最终想要输入的关键字为pand ...

  2. java数组循环扩容_Java中实现数组动态扩容的两种方法

    Java中实现数组动态扩容的两种方法 java中初始化一个数组需要定义数组的容量,而在我们使用数组时往往会遇到数组容量不够的情况,此时我们就需要通过动态扩容的方式来来根据需求扩大数组的容量. 我们可以 ...

  3. 在word文档中如何自动生成目录,两种方法制作目录,总有一种适合你

    在word文档中如何自动生成目录,两种方法制作目录,总有一种适合你 目录 在word文档中如何自动生成目录,两种方法制作目录,总有一种适合你 1.文章中的标题较多,每个单独调整格式太费劲,这里我们用一 ...

  4. C++对类中字符串成员进行初始化的两种方法以及友元函数的使用

    在C++之中,如果要建立一个类,且类中需要有字符串数据成员,我们可以把该成员声明成两种类型. 第一种方法:使用头文件string,把字符串数据成员声明为string类的对象,用这种方法对字符串操作十分 ...

  5. qt5设置linux系统时间,Qt中使用QLabel显示时间的两种方法

    Qt中使用QLabel显示时间的两种方法思路一致,只是实现方法不一样而已. main.cpp #include "displaytime.h" #include int main( ...

  6. .NET应用程序中异步调用Web Service的几种方法 come from: veryhappy(wx.net)

    测试程序界面 图一,调用前界面 图二,调用后界面 详细代码实现 闲言少叙,直接进入主题吧.首先一个声明一个类(将来在客户端与服务器间传递): public class Class1     {     ...

  7. Java中对List集合排序的两种方法

    第一种方法,就是list中对象实现Comparable接口,代码如下: public class Person implements Comparable<Person> {private ...

  8. 知识点2:js(javascript)中检测是否为数组的两种方法【翻转数组案例】

    javascript基础知识 文章目录 javascript基础知识 前言 一.翻转数组案例 二.检测数组的两种方法 1.如果传输的参数不是数组 2.instanceof 运算符 可以用来检测是否满足 ...

  9. 织梦手机端跳转到index.html,两种方法实现织梦自带手机端搜索页直接跳转到search_m.htm手机站页面...

    这篇文章主要为大家详细介绍了两种方法实现织梦自带手机端搜索页直接跳转到search_m.htm手机站页面,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,有需要的朋友可以收藏方便以后借鉴. 用过织梦 ...

最新文章

  1. Kubernetes — PV、PVC
  2. 机器学习(Machine Learning)深入学习(Deep Learning)资料
  3. python与shell校验IP地址合法性
  4. UILabel的行间距,字间距处理
  5. Linux下安装nginx, php, php-fpm并配置
  6. JQuery实现广告效果(滚动切换)
  7. sql去除字符串中首尾空格
  8. springboot 添加 lombok 报错更新 版本号
  9. 三星固态硬盘linux驱动,三星固态硬盘驱动NVMe Driver
  10. java并发编程电子书免费送???
  11. 结构梁配筋最牛插件_YouTube 字幕翻译 —— Chrome 插件
  12. 2020博客之星结束了,感谢这些小伙伴们为我投票|博客之星TOP20的几位大佬
  13. matlab 康托尔集,康托尔集的性质特点
  14. 解决 ERROR: Could not find a version that satisfies the requirement 的一种思路
  15. JPK Data Processing AFM数据处理
  16. java 画立体图形
  17. Brupsuit爆破
  18. java判断时间段是否交叉重叠
  19. python数据库选择
  20. 【LaTeX符号】条件独立与不独立符号

热门文章

  1. HEAD元素使用集锦
  2. 目标检测(或分隔)算法Mask R-CNN简介
  3. C++11多线程中std::call_once的使用
  4. VS2013在Windows7 64位上变慢的解决方法
  5. python获取当前进程id_Python进程,多进程,获取进程id,给子进程传递参数操作示例...
  6. resin php,resin竟然开始支持PHP
  7. Java项目:考试管理系统(java+Springboot+Maven+Jpa+Vue+Mysql)
  8. 照片换色 使用Python 或者 java
  9. 获取服务器路径的方式 【记录】
  10. 值传递 和 地址传递 的区别(好多句话才可以说清)