質問: Objective-CでiPhoneアプリを作成していますが、 WebビューでPHPのソースを表示させるまではできましたが、 そこに表示されているWeb上のボタン、 「再更新」と「戻る」ボタンをそれぞれ、リロードと、Webビュー遷移前の画面に戻したいと思っています。 それぞれ、「再更新」が「app://reload」に、「戻る」が「app://close」というアドレスになっています。 Webビュー上にアプリのボタンを配置してリロードなどの処理ができるようですが、 すでにWeb画面上にあるボタンの場合は可能でしょうか?
回答: WebViewには、リンク先をクリックした時にそのURLに遷移するかチェックするデリゲートメソッドがあります。 そこで、予め決めていたURLか判定し、アプリ側で何か処理するといったことが可能です。 ``` - (void)viewDidLoad { [super viewDidLoad]; // デリゲートを設定 self.webView.delegate = self } - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { // URLが「app://~」であるかの判定 if ([request.URL.scheme isEqualToString:@"app"]) { // ~のところの判定 if ([request.URL.host isEqualToString:@"reload"]) { // リロード処理 [webView reload]; } else if ([request.URL.host isEqualToString:@"close"]) { // 戻る処理 [webView goBack]; } // アプリとの連携の場合はリンク先に飛ばないようにNOを返す return NO; } return YES; } ```