Ci sono 2 problemi per impedirvi di accedere al vostro codice. Per prima cosa, quando passi un URL a -loadURL: get: metodo, Facebook iOS SDK ricostruisce la vera base dell'URL sul tuo. Quindi, l'url che hai passato non entrerà finalmente nella webview. Quello che dovete fare è implementare un metodo in FBDialog.m come questo:
-(void)hackLoadURL:(NSString*)url withDelegate:(id)delegate {
_webView.delegate = delegate;
[_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]]];
}
Il secondo problema è che è necessario per incidere il metodo
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
delegato e sostituito con quello di effettuare implementazione . Ma al fine di mantenere l'originale funziona Facebook SDK, è necessario aggiungere di seguito il codice per FBDialog.m
_webView.delegate = self;
entro -loadURL: ottenere: il metodo, e prima di questa linea
[_webView loadRequest:request];
, infine, è necessario implementare
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
voi stessi nella classe, e utilizzare
FBDialog *dlg = [FBDialog new];
[dlg hackLoadURL: yourExpectUrl withDelegate: self];
fare ciò che volevi.
fonte
2011-12-01 14:01:06
Suppongo che vogliate solo riutilizzare la finestra di dialogo a destra? –
Mmm Non so se riutilizzare sia il termine giusto o meno, ma voglio solo aprire un URL così come aprirne uno in un UIWebView. – EmptyStack