2011-10-15 14 views
6

Bir Kakao uygulamasına WebView ekledim ve navigasyon değişikliklerinin ne zaman olduğunu saptamak için hangi temsilci kullanabileceğimi anlamaya çalışıyorum (kullanıcı bir bağlantıyı tıklattığında veya javascript yangınlarını değiştirmek için konum, vb. WebView class referenceCocoa WebKit/WebView konum değişikliği için temsilci mi? (Kullanıcı tıklanan link, javascript eylemi, vb)

dört delege (WebFrameLoadDelegate Protokolü Başvurusu WebPolicyDelegate Protokolü Başvurusu WebResourceLoadDelegate Protokol Referansı ve WebUIDelegate Protokol Referansı) içerir ve bunlardan her biri baktım ama bunu algılamak nasıl bulmak gibi olamaz. Açıkça bariz bir şeyi mi özlüyorum yoksa bunu elde etmenin bir yolu yok mu?

tldr - Web Görünümü URL'yi değiştirirken bir olay almak için bir temsilci nasıl ayarlayabileceğimi bulmaya çalışıyorum. (Özellikle yeni URL'nin ne olduğunu bilmem gerekiyor).

cevap

9

(yani MacOS X) sonra muhtemelen istekleri takip etmek için en iyi yer webView:identifierForInitialRequest:fromDataSource: içindedir: URL isteği elde edilebilir talep.

iOS'ta olduğu gibi, [request URL]'u kullanabilirsiniz.

Bunu, [webView setResourceLoadDelegate:self]; aracılığıyla ayarlayın.

Kaynak yükleme temsilcisi (yukarıdaki gibi), benim görüşüme göre politik delege yöntemlerinden daha iyi seçenekler sunar.

-1

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { 
    return YES; 
} 

uygulayın ve vücut içinde gezinti türünü test edin. Sınıfınızın web görünümünün temsilcisi olarak ayarlanması ve UIWebViewDelegate protokolünü uygulaması gerekir. webView:resource:willSendRequest:redirectResponse:fromDataSource: da iyidir, ve değiştirmek için izin avantajına sahip olmasına rağmen, WebKit kullanma

[request URL] 
+3

Teşekkürler, ancak bu Mac geliştirme iOS UIWebView sınıfını değil WebView sınıfını kullanıyor. – Kyle

+0

Bu programdan çıkmak (yanlış, bu durum için), iOS programcıları tam olarak bu soruyla gelebilir. –

5

Ben bu iki WebPolicyDelegate yöntemleri uygulamak tavsiye:

-webView:decidePolicyForNavigationAction:request:frame:decisionListener: 
-webView:decidePolicyForNewWindowAction:request:newFrameName:decisionListener: 

size gittiğiniz olan yeni URL anlatmak değil, aynı zamanda size varsayılan davranışını değiştirmek için bir şans verecektir Yani. Örneğin. WebKit yeni pencereleri açmaya çalışamazsınız.

İlgili konular