コードからあなたを防ぐために2つの問題があります。まず、-loadURL:get:メソッドにURLを渡すと、FacebookのiOS SDKが実際のURLベースを再構築します。したがって、あなたが渡したURLは最終的にwebviewに入りません。
-(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;
デリゲートメソッドをハックする必要があることですし、実装を行うものと交換:何をする必要があると、このようなFBDialog.mのメソッドを実装しています。しかし、元のFacebook SDKが動作保つために、あなたは-loadURL内FBDialog.m
_webView.delegate = self;
にコードの下に追加する必要があります。get:最後にメソッドを、この行の前に
[_webView loadRequest:request];
、あなたはあなたのクラスで
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
自分を実装する必要があり、使用
FBDialog *dlg = [FBDialog new];
[dlg hackLoadURL: yourExpectUrl withDelegate: self];
あなたが望むことをする。
ダイアログビューを正しく再利用したいと思いますか? –
私は再利用が適切な用語であるかどうかわかりませんが、URLをUIWebViewで開かれているものと同じように開くだけです。 – EmptyStack