2013-04-13 17 views

cevap

23

Evet, mümkün. HTML'nize, bir JS, iOS kodunda gibi

window.location = "request_for_action://anything/that/is/a/valid/url/can/go/here"; 

Sonra sahte düzeni ile bir URL yüklemek için Web görünümü için bir temsilci atamak yazabilir ve temsilci, sap

webView:shouldLoadWithRequest:navigationType 

if([request.URL.scheme isEqualToString: @"request_for_action"]) 
{ 
    // parse your custom URL to extract parameter, use URL parts or query string as you like 
    return NO; // return NO, so webView won't actually try to load this fake request 
} 

gibi bir şeyle

- kenara Hemen

bir iOS co izin başka bir yol yapabilirsiniz de tam olarak ben başarmak için gerekenler görünüyor

NSString* returnValue = [self.webView stringByEvaluatingJavaScriptFromString: "someJSFunction()"]; 
9

Evet! Kullanıcı bir bağlantıyı bastığında, bunu web görünümünün temsilcisinden duyarsınız ve istediğiniz şeyi yapabilirsiniz. Güçlü şeyler bu şekilde yapılabilir.

Web görünümünün temsilcisi webView:shouldStartLoadWithRequest:navigationType: gönderilir. Ne olduğunu analiz edip, istediğin gibi cevap ver. Web görünümünün bağlantıyı takip etmesini engellemek için (tamamen yanlış olsa da), sadece NO döndürün.

Bu örnekte, TidBITS Haberler uygulamasından, Web sayfasında tamamen oluşturulmuş bir play: şemasını kullanan bir bağlantım var. Ben delege ve oyundaki olduğunu tespit:

- (BOOL)webView:(UIWebView *)webView 
     shouldStartLoadWithRequest:(NSURLRequest *)r 
     navigationType:(UIWebViewNavigationType)nt { 
    if ([r.URL.scheme isEqualToString: @"play"]) { 
     [self doPlay:nil]; 
     return NO; 
    } 
    if (nt == UIWebViewNavigationTypeLinkClicked) { 
     [[UIApplication sharedApplication] openURL:r.URL]; 
     return NO; 
    } 
    return YES; 
} 
+0

kullanarak ederek html bazı JS kodlarını çağırmak. Ama bu yöntemi nereye koyacağımı anlayamıyorum? Açıklayıcı cevap için teşekkürler, bu arada! –

+0

UIWebView'un temsilcisinin bulunduğu yere koyun! – matt

+0

Alwesome, bu işe yarıyor! :) Bir soru daha: Önceden tanımlanmış URL-şema ile bağlantıyı tıklattığımda, uygulama Safari'ye yönlendiriyor ve onu açmaya çalışıyor? –

2

UIWebViewDelegate yöntemi webView:shouldStartLoadWithRequest:navigationType: uygulayın.

Gezinme Gezinme Türü ve istek gerektiği gibi.

+0

Temsilci ayarladı ve uiwebview temsilci yöntemlerini uyguladı. Ancak bazı uiwebview içeriğine tıkladığımda temsilci yöntemlerimden hiçbiri aranmıyor. Geri arama yok. Ne yapılmalı? – iPhoneDeveloper

+0

@iPhoneDeveloper Kendi sorunuzu tüm ilgili detaylarla birlikte göndermelisiniz. – rmaddy

İlgili konular