0

我正在使用 UIWebView 来允许用户推送一个打开 YouTube 的新控制器。我想要做的是将一个字符串直接传递到 YT 搜索栏中。该字符串是前一个视图控制器的标题。例如,假设用户正在查看名为“Straight Leg Raise”的练习的视图,通过点击 UIButton,YT 在新的视图控制器中打开,“Straight Leg Raise”自动进入 YT 搜索栏。在此示例中,Youtube 搜索的 URL 格式为“ http://www.youtube.com/results?search_query=straight+leg+raise ”。我只是对字符串知之甚少,无法做到这一点。已针对 Android 提出并回答了该问题(从我的应用程序中搜索 Youtube 应用程序中的特定字符串),但我找不到适用于 iOS 的类似答案。

打开 YouTube 网页视图的代码:

NSURL *url = [NSURL URLWithString:@"http://www.youtube.com"];
NSURLRequest *urlrequest = [NSURLRequest requestWithURL:url];
[webView loadRequest:urlrequest];

至于从前一个视图控制器获取字符串,这是我无法弄清楚的一部分。

4

2 回答 2

0

在将搜索字符串包含在 URL 中之前,您需要对搜索字符串进行 URL 编码。您可以通过包含来自 Dave DeLong 的这个类别来做到这一点:

- (NSString *) URLEncodedString_ch {
    NSMutableString * output = [NSMutableString string];
    const unsigned char * source = (const unsigned char *)[self UTF8String];
    int sourceLen = strlen((const char *)source);
    for (int i = 0; i < sourceLen; ++i) {
        const unsigned char thisChar = source[i];
        if (thisChar == ' '){
            [output appendString:@"+"];
        } else if (thisChar == '.' || thisChar == '-' || thisChar == '_' || thisChar == '~' || 
                   (thisChar >= 'a' && thisChar <= 'z') ||
                   (thisChar >= 'A' && thisChar <= 'Z') ||
                   (thisChar >= '0' && thisChar <= '9')) {
            [output appendFormat:@"%c", thisChar];
        } else {
            [output appendFormat:@"%%%02X", thisChar];
        }
    }
    return output;
}

然后,假设您以前的视图控制器的标题被称为exercise,您可以这样做

NSString *youTubeUrl = [NSString stringWithFormat:@"http://www.youtube.com/results?search_query=%@", [exercise URLEncodedString_ch]];
NSURL *url = [NSURL URLWithString:youTubeUrl];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
[webView loadRequest:urlRequest];
于 2013-09-05T12:51:02.970 回答
-1

在 Safari 中使用 Web Inspector,您可以获得 youtube 搜索栏的“id”。说“id”是 YOU_TUBE_SEARCH_ID。在搜索框中设置标题的javascript是,

var searchBar = document.getElementById('YOU_TUBE_SEARCH_ID');
searchBar.value = YOUR_SEARCH_TEXT;

您可以通过 UIWebView API 运行此脚本,

NSString *script = [NSString stringWitFormat:@"document.getElementById('YOU_TUBE_SEARCH_ID').value = %@",YOUR_SEARCH_TEXT];
[webView stringByEvaluatingJavaScriptFromString:script];

请参阅此链接以使用网络检查器

http://webdesign.tutsplus.com/tutorials/workflow-tutorials/quick-tip-using-web-inspector-to-debug-mobile-safari/

于 2013-09-03T05:04:43.123 回答