Webview
デリゲートshouldstartloadwithrequest
は HTML から URL を受け取り、リクエストを確認するとすべてが小文字に変換されています。
- (BOOL) webView: (UIWebView *) webView shouldStartLoadWithRequest:(NSURLRequest *) request navigationType: (UIWebViewNavigationType) navigationType {
// Only do something if a link has been clicked
if (navigationType == UIWebViewNavigationTypeLinkClicked) {
NSString *link = [[request URL] absoluteString];
if ([link hasPrefix:@"playSound:"]) {
[PlayAudio playAudio: [link substringFromIndex:10]];
return NO;
}
}
return YES;
}
問題を起こす行は
NSString *link = [[request URL] absoluteString];
クリックしたリンクの変更されていないコピーを取得する前に。iOS3 と iOS4 でも同じです。ただし、iOS5 では小文字のみに変換されます。次の行
if ([link hasPrefix:@"playSound:"]) {
真になることはありません。そのため、コードを次のように変更する必要がありました
- (BOOL) webView: (UIWebView *) webView shouldStartLoadWithRequest:(NSURLRequest *) request navigationType: (UIWebViewNavigationType) navigationType {
// Only do something if a link has been clicked
if (navigationType == UIWebViewNavigationTypeLinkClicked) {
NSString *link = [[[request URL] absoluteString] lowercaseString];
if ([link hasPrefix:@"playsound:"]) {
[PlayAudio playAudio: [link substringFromIndex:10]];
return NO;
}
}
return YES;
}