在 UIWebView 上拉动刷新?
Pull to refresh on UIWebView?
我正在尝试拉动以刷新我加载网站的 UIWebView
。
UIWebView
的代码很简单
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var WebView: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let URL = NSURL(string: "https://the url/")
WebView.loadRequest(NSURLRequest(URL: URL!))
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
有没有人有任何示例,因为无论我搜索什么,我都只在 tableviews 上找到拉动刷新,我不确定它是否也适用于这个。
谢谢。
更新1.经过Sohil的建议代码是这样的
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var WebView: UIWebView!
@IBOutlet weak var scrollView: UIScrollView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let URL = NSURL(string: "https://iremember.gr/")
WebView.loadRequest(NSURLRequest(URL: URL!))
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
func scrollViewWillEndDragging(scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
if (scrollView.contentOffset.y < 0){
//reach top
print("Reach Top")
WebView.reload()
}
else {
print("nothing")
}
}
}
}
但是当我尝试重新加载它时它甚至不打印 "nothing"。
您可以使用 UIScrollView
来完成该任务。首先,您需要检查用户是否正在拉 UIWebView
'Up' 或 'Down',因为下面的代码将有助于查看并重新加载 UIWebView
:
func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
if (scrollView.contentOffset.y < 0){
//reach top
print("Reach Top")
webView.reload()
}
}
确保您已将委托添加到 UIScrollView
:
webView.scrollView.delegate = self
希望对您有所帮助!
你好你可以做到这一点
- (void)viewDidLoad {
webViewHome.scrollView.delegate = self;
// Refresh UIControl
refreshControl = [[UIRefreshControl alloc]init];
[webViewHome.scrollView addSubview:refreshControl];
[refreshControl addTarget:self action:@selector(refreshWebview) forControlEvents:UIControlEventValueChanged];
}
Refresh method
- (void)refreshWebview {
//TODO: refresh your data
[refreshControl endRefreshing];
[self loadWebviewWithUrl:kLoginUrl];
}
I add refresh control in Did Load method. then I define refresh controller method and in that, I reload my webview.
我正在尝试拉动以刷新我加载网站的 UIWebView
。
UIWebView
的代码很简单
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var WebView: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let URL = NSURL(string: "https://the url/")
WebView.loadRequest(NSURLRequest(URL: URL!))
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
有没有人有任何示例,因为无论我搜索什么,我都只在 tableviews 上找到拉动刷新,我不确定它是否也适用于这个。
谢谢。
更新1.经过Sohil的建议代码是这样的
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var WebView: UIWebView!
@IBOutlet weak var scrollView: UIScrollView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let URL = NSURL(string: "https://iremember.gr/")
WebView.loadRequest(NSURLRequest(URL: URL!))
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
func scrollViewWillEndDragging(scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
if (scrollView.contentOffset.y < 0){
//reach top
print("Reach Top")
WebView.reload()
}
else {
print("nothing")
}
}
}
}
但是当我尝试重新加载它时它甚至不打印 "nothing"。
您可以使用 UIScrollView
来完成该任务。首先,您需要检查用户是否正在拉 UIWebView
'Up' 或 'Down',因为下面的代码将有助于查看并重新加载 UIWebView
:
func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
if (scrollView.contentOffset.y < 0){
//reach top
print("Reach Top")
webView.reload()
}
}
确保您已将委托添加到 UIScrollView
:
webView.scrollView.delegate = self
希望对您有所帮助!
你好你可以做到这一点
- (void)viewDidLoad {
webViewHome.scrollView.delegate = self;
// Refresh UIControl
refreshControl = [[UIRefreshControl alloc]init];
[webViewHome.scrollView addSubview:refreshControl];
[refreshControl addTarget:self action:@selector(refreshWebview) forControlEvents:UIControlEventValueChanged];
}
Refresh method
- (void)refreshWebview {
//TODO: refresh your data
[refreshControl endRefreshing];
[self loadWebviewWithUrl:kLoginUrl];
}
I add refresh control in Did Load method. then I define refresh controller method and in that, I reload my webview.