2016-07-02 9 views
6

में काम नहीं कर रहे रीफ्रेश करने के लिए खींचें मैंने आईओएस में सीधे आगे WKWebView लागू किया है।आईओएस वेबव्यू

var refreshControl = UIRefreshControl() 
    refreshControl.addTarget(self, action: Selector("refreshWebView"), forControlEvents: UIControlEvents.ValueChanged) 

यह viewDidLoad()

और इसी refreshWebView समारोह में है। लेकिन जब मैं इसे मोबाइल या सिम्युलेटर पर चलाता हूं, इससे कोई फर्क नहीं पड़ता कि मैं कितना खींचता हूं, कार्रवाई को रीफ्रेश करने के लिए कोई खींच नहीं है। कुछ भी ट्रिगर नहीं हुआ है, और यह लगभग लगता है जैसे मैं स्क्रीन की ऊपरी सीमाओं पर फंस गया हूं। गलत कहां जा रहा है? आप refresh को खींचने के लिए चाहते हैं

+0

कृपया दृश्य दृश्य वेब व्यू में दिखाई देगा (मेरा मतलब है कि दृश्य जो लोड लोड कर रहा है)। इसे अपने ** रीफ्रेश करें WebView() ** विधि – JAck

+0

रीफ्रेश करें WebView कभी भी कॉल नहीं किया जाता है। – RandomGuy

+0

इस के लिए कोई समाधान? –

उत्तर

9

कोशिश इस तरह अपने कोड को बदलने के लिए, webView आप इस

let refreshControl = UIRefreshControl() 
refreshControl.addTarget(self, action: #selector(self.refreshWebView(_:)), forControlEvents: UIControlEvents.ValueChanged) 
webView.scrollView.addSubview(refreshControl) 
तरह webView की ScrollView में addSubView UIRefreshControl वस्तु की जरूरत

इस

func refreshWebView(sender: UIRefreshControl) { 
    print("refersh") 
    webView.loadRequest(NSURLRequest(URL: NSURL(string: "https://google.com")!)) 
    sender.endRefreshing() 
} 
की तरह समारोह जोड़ें

आशा है कि यह आपकी मदद करेगा।

+0

मैंने यह किया है। और अभी भी कोई बदलाव नहीं है। – RandomGuy

+0

क्या आपने फ़ंक्शन जोड़ा है, मैंने जवाब संपादित किया है और आप किस स्विफ्ट का उपयोग कर रहे हैं, स्विफ्ट 2, स्विफ्ट 2.2 या इससे अधिक? –

+0

क्षमा करें, कोशिश की, और अभी भी कुछ भी नहीं। "ताज़ा करें" अभी कभी मुद्रित नहीं होता है। और किसी भी तरह ऐसा लगता है कि यह अभी ट्रिगर नहीं किया जा रहा है। स्विफ्ट 2.2 का उपयोग कर – RandomGuy

0

इसे नीचे की तरह घोषित करने का प्रयास करें।

refreshControl.addTarget(self, action: #selector(yourViewController.refreshWebView), forControlEvents: UIControlEvents.ValueChanged) 

आशा इस काम करता है ..

2

आप वेबव्यू की scrollview के लिए उछल सक्षम करने के लिए:

webView.scrollView.bounces = true 

यह आपको वेबव्यू नीचे खींचें जो आपके UIRefreshControl को गति प्रदान करेगा करने देगा।

2

बस स्विफ्ट 3 में इस पर देख रहे हैं कहते हैं करने के लिए और जैक से जवाब मुझे इस मुद्दे को हल करने में मदद मिली:

loadView()/viewDidLoad()

webView.scrollView.bounces = true 
let refreshControl = UIRefreshControl() 
refreshControl.addTarget(self, action: #selector(ViewController.refreshWebView), for: UIControlEvents.valueChanged) 
webView.scrollView.addSubview(refreshControl) 

में

और फिर एक अलग समारोह

func refreshWebView(sender: UIRefreshControl) { 
    print("refersh") 
    // 
    sender.endRefreshing() 
} 

और अब मैं ताज़ा मुद्रित किया जा रहा हूं।

0

निम्नलिखित कोड वेबव्यू के स्क्रॉलव्यू में रीफ्रेश नियंत्रण डाल देगा। प्रारंभ में यह google.com लोड करेगा। स्पष्ट रूप से रीफ्रेश करने के लिए पुल देखने के लिए मैंने स्क्रॉल व्यू की पृष्ठभूमि में सफेद रंग सेट किया है, इसलिए यह स्पष्ट रूप से दिखाई देता है और वेबव्यू रीफ्रेश करने के लिए खींचने पर फेसबुक पेज खुलता है।

override func viewDidLoad() { 

    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    self.refreshControl = UIRefreshControl.init() 
    refreshControl!.addTarget(self, action:#selector(refreshControlClicked), for: UIControlEvents.valueChanged) 
    self.webView.scrollView.addSubview(self.refreshControl!) 

    self.webView.scrollView.backgroundColor = UIColor.white 

    self.webView.delegate = self 


    let url:URL = URL.init(string:"https://www.google.com")! 

    self.loadRequestWithUrl(URLRequest.init(url: url)) 

} 


func webViewDidStartLoad(_ webView: UIWebView) { 

    NSLog("website loaded") 
} 

func loadRequestWithUrl(_ urlRequest : URLRequest?){ 

    if(urlRequest != nil){ 

     self.webView.loadRequest(urlRequest!) 
    } 
} 

func refreshControlClicked(){ 

    let url:URL = URL.init(string:"https://www.facebook.com")! 

    self.loadRequestWithUrl(URLRequest.init(url: url)) 
}