Swift:WKWebView 中 UIRefreshControl 的自定义操作
Posted
技术标签:
【中文标题】Swift:WKWebView 中 UIRefreshControl 的自定义操作【英文标题】:Swift: Custom action for UIRefreshControl in WKWebView 【发布时间】:2020-06-10 14:53:05 【问题描述】:我使用的是最新的Xcode
和Swift
版本。
我正在使用WKWebView
显示来自我的网络服务器的内容。
我正在使用以下代码pull to refresh
:
let refreshControl = UIRefreshControl()
refreshControl.addTarget(self, action: #selector(refreshWebView(_:)), for: UIControl.Event.valueChanged)
homeWebView.scrollView.addSubview(refreshControl)
由于刷新似乎与(重新)加载 URL 不同,这会导致一些意外行为。此外,它不会触发func webView(_ webView: WKWebView, didCommit navigation: WKNavigation!)
。
有什么方法可以catch
pull to refresh
函数并制作一些自定义的东西,例如正在加载另一个网址?
【问题讨论】:
【参考方案1】:您可以将Selector
中的操作更改为您传递给自定义操作的操作,方法如下:
refreshControl.addTarget(self, action: #selector(myCustomAction), for: UIControl.Event.valueChanged)
行动:
@objc func myCustomAction()
print("my custom action here...")
【讨论】:
【参考方案2】:Swift 4 和 Swift 5
lazy var refreshControl: UIRefreshControl =
let ref = UIRefreshControl()
ref.attributedTitle = NSAttributedString(string: "Pull to refresh")
ref.tintColor = UIColor.red
ref.addTarget(self, action: #selector(refreshData), for: UIControl.Event.valueChanged)
return ref
()
override func viewDidLoad()
super.viewDidLoad()
myWebView.scrollView.addSubview(refreshControl)
@objc func refreshData()
//TODO:- Do whatever you want
【讨论】:
以上是关于Swift:WKWebView 中 UIRefreshControl 的自定义操作的主要内容,如果未能解决你的问题,请参考以下文章
在 WKWebView (iOS, Swift) 中使用本地 Javascript 源加载本地 HTML
在 Swift 中使用 JS 隐藏 WKWebView 集合元素