2010-11-29 13 views
5

Hii सभी,WebView का उपयोग कर विभिन्न पेज लोड हो रहा है: decidePolicyForNavigationAction: अनुरोध: फ्रेम: decisionListener: विधि

मैं एक नया पेज लोड करने के लिए जब निम्न विधि कहा जाता है चाहता हूँ .... मैं निम्नलिखित कोड का उपयोग कर रहा ..

 


(void)webView:(WebView *)webView decidePolicyForNavigationAction:(NSDictionary *)actionInformation request:(NSURLRequest *)request frame:(WebFrame *)frame decisionListener:(id)listener 
{ 
    [[myWebView mainFrame] loadRequest:someRequest]; 
} 
 

लेकिन इस विधि से अधिक बार और अपने आवेदन दुर्घटनाओं अगर मैं [श्रोता उपयोग] का उपयोग कहा जाता है बजाय loadRequest की यह ठीक काम करता है लेकिन शुरूआत यूआरएल क्लिक किया। लेकिन मैं कुछ अन्य यूआरएल लोड करना चाहता हूं यह कैसे संभव है?

उत्तर

1

यह कई बार कहा जाता है के रूप में आप कहते हैं, तो आप इस पर ध्यान देना चाहिए:
[actionInformation valueForKey: @"WebActionNavigationTypeKey"]

कि मूल्य WebNavigationType enum में से एक होना चाहिए:
WebNavigationTypeLinkClicked,
WebNavigationTypeFormSubmitted,
WebNavigationTypeBackForward,
WebNavigationTypeReload,
WebNavigationTypeFormResubmitted,
WebNavigationTypeOther

आप WebNavigationTypeLinkClicked पहले मिल जाएगा एक लिंक के परिणामस्वरूप क्लिक किया गया, और यहां आप तय कर सकते हैं कि पृष्ठ को क्लिक करना है या कुछ और लोड करना है या नहीं।
WebNavigationTypeOther प्राप्त करने के तुरंत बाद पृष्ठ लोड होता है, और आप इसे अनदेखा कर सकते हैं।

1

ठीक है, इस विधि में एक मूल्य वापस करना अनिवार्य है। आपको यह तय करना होगा कि क्या आप इस यूआरएल को स्वीकार करते हैं या नहीं। तो यदि वेबव्यू उस पृष्ठ पर जा रहा है जिसे आप नहीं चाहते हैं, आपको अनदेखा करना चाहिए।

और WebView अपने अन्य यूआरएल के लिए जाना है: [myWebView setMainFrameURL:otherUrlStr]

धन्यवाद

2

आप बस [listener ignore] विधि कॉल जोड़ना चाहिए।

- (void)webView:(WebView *)webView decidePolicyForNavigationAction:(NSDictionary *)actionInformation request:(NSURLRequest *)request frame:(WebFrame *)frame decisionListener:(id)listener 
{ 
    [listener ignore]; 
    [[myWebView mainFrame] loadRequest:someRequest]; 
} 
संबंधित मुद्दे