2011-11-26 42 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]; 

做你想做的事。

相关问题