2011-11-26 38 views
5

我正在努力尋找到這一點。我可以在FBDialog中打開一個URL,或者在FBConnect中使用某些東西。我試圖像下面這樣做。但它似乎並沒有工作。我可以在FBDialog或FBConnect中打開一個URL(Facebook頁面)嗎?

FBDialog *dlg = [FBDialog new]; 
[dlg loadURL:@"http://www.facebook.com/pages/Apple-Inc/137947732957611" get:nil]; 

我甚至不知道這是否可行。你們能幫我嗎?

+0

我假設你只是想重用對話視圖的權利? –

+1

嗯,我不知道重用是否是正確的術語,但我只想打開一個URL,就像在UIWebView中打開一個URL一樣。 – EmptyStack

回答

3

有2個問題阻止你從你的代碼。首先,當你傳遞一個url到-loadURL:get:方法時,Facebook iOS SDK會重建你的真實網址庫。所以,你傳遞的url最終不會進入webview。你需要做的是實現這樣的FBDialog.m的方法:

-(void)hackLoadURL:(NSString*)url withDelegate:(id)delegate { 
    _webView.delegate = delegate; 
    [_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]]]; 
} 

的第二個問題是,你需要破解的

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType; 

委託方法,並與一個替代你做出實施。但爲了保持原有的Facebook SDK工作,你需要內-loadURL下面的代碼添加到FBDialog.m

_webView.delegate = self; 

:得到:方法,這行

[_webView loadRequest:request]; 

終於之前,需要實現類

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType; 

自己,並使用

FBDialog *dlg = [FBDialog new]; 
[dlg hackLoadURL: yourExpectUrl withDelegate: self]; 

做你想做的事。

相關問題