Swift: WKWebView 中 UIRefreshControl 的自定义操作
Swift: Custom action for UIRefreshControl in WKWebView
我正在使用最新的 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
函数并制作一些自定义内容,例如加载另一个 URL?
您可以只更改 Selector
中传递给自定义操作的操作,方法如下:
refreshControl.addTarget(self, action: #selector(myCustomAction), for: UIControl.Event.valueChanged)
操作:
@objc func myCustomAction() {
print("my custom action here...")
}
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
}
我正在使用最新的 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
函数并制作一些自定义内容,例如加载另一个 URL?
您可以只更改 Selector
中传递给自定义操作的操作,方法如下:
refreshControl.addTarget(self, action: #selector(myCustomAction), for: UIControl.Event.valueChanged)
操作:
@objc func myCustomAction() {
print("my custom action here...")
}
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
}