Swift:WKWebView 中 UIRefreshControl 的自定义操作

Posted

技术标签:

【中文标题】Swift:WKWebView 中 UIRefreshControl 的自定义操作【英文标题】:Swift: Custom action for UIRefreshControl in WKWebView 【发布时间】:2020-06-10 14:53:05 【问题描述】:

我使用的是最新的XcodeSwift 版本。

我正在使用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 的自定义操作的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中使用 WKWebView 进行身份验证

在 WKWebView (iOS, Swift) 中使用本地 Javascript 源加载本地 HTML

在 Swift 中使用 JS 隐藏 WKWebView 集合元素

如何在swift 4中从WKWebView中的网页中删除DIV标签?

在 Swift 中删除 WKWebView 附件栏

如何将 swift 对象传递给 javascript (WKWebView / swift)