だいたいそれでいいんじゃないの

つれつれなるkixixixixiの技術的なストック。http://reload.co.jp

UIWebViewで動いているアプリをネイティブっぽくしてみた

かなり既知なことと思いますが、UIWebViewでの挙動をネイティブっぽくするコードの備忘録。

 

経緯

iOSアプリは審査が1週間あり、ちょっとした変更のためにアップデートするのはかなりコストがかかり大変だったりします。

なので自分のアプリには頻繁に変更をしたいと思った画面等はUIWebViewで作ったりします。

そこでこんなことをよく思います。

画面遷移時にネイティブっぽくリッチにしたい!

それをWeb上のJSで毎回実現するのは遅いし大変だ!

 

そのため自分はよく、UIWebViewでの画面遷移時にネイティブでNavigationでViewを重ねた挙動をさせまてます。

 

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{

    NSURL *url = [request URL];

    if (navigationType == UIWebViewNavigationTypeLinkClicked) {

          WebViewController *nextView = [[WebViewControlleralloc]init];

          nextView.URL = request.URL;

          nextView.title = self.title;

          [self.navigationControllerpushViewController:nextView animated:YES];

            return NO;

    }

    returnYES;

} 

 

リンクタップ時の読み込み時だけWebViewController(自分のクラス)に遷移先のURLを渡します。

そして受け取ったViewControllerでViewWillAppearのタイミングでloadRequestを投げます。

 

それだけのコードでまるでネイティブのような錯覚になりますw

 今回はこれだけです。

以上〜。