【问题标题】:IOS, UIWebview, [closed]IOS,UIWebview,[关闭]
【发布时间】:2013-07-08 12:09:03
【问题描述】:

Webview delegate 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;
}

【问题讨论】:

  • Soooo...有什么问题?
  • 正是.. 是什么??
  • -1 表示没有实际问题。如果提出问题,将删除。
  • 这个问题很不雅,就是为什么该方案被转换为小写字母以及他能做些什么。

标签: ios objective-c uiwebviewdelegate


【解决方案1】:

这是作为 iOS 5 中 safari 升级的一部分所做的更改,并且与 URL 的规范一致。 URL 方案将始终转换为小写。

(因为这个改动,我不得不修复很多代码)

【讨论】:

    【解决方案2】:
    if ([link hasPrefix:@"playsound:"] ||[link hasPrefix:@"playSound:"] )
    {
        [PlayAudio playAudio: [link substringFromIndex:10]];
            return NO;
    }
    

    【讨论】:

    • 但问题是我在请求字段中获取编码值。当我收到所有小东西时,我无法对其进行解码。当我解码它时我得到为零..
    猜你喜欢
    • 1970-01-01
    • 2011-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    相关资源
    最近更新 更多