UIWebViewには、AndroidのWebViewのようにJavaScriptのためのインターフェースを用意するメソッドはありません。なので、UIWebViewで拾えるイベントをHTML/JavaScriptから発生させる必要があります。
UIWebViewDelegateを実装し、UIWebViewのdelegateを設定します。
@interface MyViewController : UIViewController <UIWebViewDelegate>
@property(weak) IBOutlet UIWebView *webView;
@end
@implementation MyViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.webView.delegate = self;
}
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)
request navigationType:(UIWebViewNavigationType)navigationType
{
NSLog(@"called from UIWebView");
return YES;
}
@end
native://log のように、http/https以外にしておきます。
<a href="native://log?msg=1122">call!</a>
webView:shouldStartLoadWithRequest:navigationType:の中で、native://が来た時だけ、別のメソッドを読んでUIWebView側は何もしない という処理を書いてみます。
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)
request navigationType:(UIWebViewNavigationType)navigationType
{
NSString *scheme = request.URL.scheme;
if ([scheme isEqualToString:@"native"]) {
NSLog(@"query is %@", request.URL.query);
return NO;
}
NSLog(@"called from UIWebView");
return YES;
}
return NOでUIWebView自体の遷移処理は止まります。
queryをパースして、引数のようにして使うともっと幅が広がりますよね。
こちらを読んでくださいな。