私は Xcode に比較的慣れていないので、を使用するアプリの構築を開始しましたUIWebView
。App Store への提出に準拠させるために、Apple は Safari を使用することを推奨しています。この問題を克服するために、UIWebView
クリックすると Safari で同じ URL を開くボタンをナビゲーションに追加したいと考えています。この例は、Twitter アプリで見ることができます。UIWebView
現在表示されている Safari ウィンドウを開くボタンがあります。
質問する
1392 次
1 に答える
2
UIWebViewDelegate
のメソッド を使用できます
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
if iWantToOpenThisURLInSafari([request URL]) {
[UIApplication openUrl:[request URL]];
return NO; // tell the webView to not navigate to the URL, I'm handling it
} else {
return YES;
}
}
- (BOOL)iWantToOpenThisURLInSafari:(NSURL* url) [
// you just have to fill in this method.
return NO;
}
編集: @PaulGraham によって要求された詳細
// You have a pointer to you webView somewhere
UIWebView *myWebView;
// create a class which implements the UIWebViewDelegate protocol
@interface MyUIWebViewDelegate:NSObject<UIWebViewDelegate>
// in this class' @implementation, implement the shouldStartLoad..method
@implementation
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
if iWantToOpenThisURLInSafari([request URL]) {
[UIApplication openUrl:[request URL]];
return NO; // tell the webView to not navigate to the URL, I'm handling it
} else {
return YES;
}
}
// then, set the webView's delegate to an instance of that class
MyUIWebViewDelegate* delegate = [[MyUIWebViewDelegate alloc] init];
webView.delegate = delegate;
// your delegate will now recieve the shouldStartLoad.. messages.
于 2012-07-14T07:59:03.593 に答える