gpt4 book ai didi

iphone - 在 UIWebView 中获取 iPhone 的移动 twitter webapp

转载 作者:可可西里 更新时间:2023-11-01 06:19:22 25 4
gpt4 key购买 nike

好的,场景如下:我正在构建一个 iPad 应用程序,它将显示一个 UIWebView,宽度 = 320 像素(或现在的点数)。它将在应用程序中出现一个“小部件”。

我必须通过在 self.viewDidLoad 上执行此操作来修改 webview 的用户代理,使其显示移动版本,而不是桌面版本。

NSDictionary *dictionnary = [[NSDictionary alloc] initWithObjectsAndKeys:@"Mozilla/5.0 (iPhone; CPU iPhone OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1        Mobile/9A334 Safari/7534.48.3", @"UserAgent", nil];
[[NSUserDefaults standardUserDefaults] registerDefaults:dictionnary];

我还将 webview 的框架设置为 320 像素宽,并将 scalesPageToFit 设置为 YES。

好的,但这就是问题所在:webview 显示的是移动版本,但显示的是 TABLET 移动版本,它可能会出现在 Honeycombs 平板电脑上。它有点像一个巨大的 iPhone 网络应用程序,大约有 600 像素宽。 UIwebView 的框架是 320px 宽,但它的内容要宽得多。

我不明白发生了什么,因为用户代理被设置为 iPhone 上的 Mobile Safari。关于如何使这个 320 像素宽的 UIWebView 显示与您在 iPhone 的移动 Safari 上键入 mobile.twitter.com 时获得的版本完全相同的版本,您有什么想法吗?

编辑:好的,这些问题似乎与 twitter webapp 使用“device-width”来确定向用户显示哪个 webapp 有关。

我找到了这个解决方案:displaying Wiki mobile page in UIWebView within UIPopoverController

有点效果:

 -(void)webViewDidFinishLoad:(UIWebView *)webView{
if (hasLoaded == NO){
NSString *webHTML = [NSString stringWithContentsOfURL:self.webView.request.URL encoding:NSUTF8StringEncoding error:NULL];
NSRange range = [webHTML rangeOfString:@"device-width"];
if ((range.location!=NSNotFound)&&(range.length != 0)) {
webHTML = [webHTML stringByReplacingOccurrencesOfString:@"device-width" withString:@"320" options:0 range:range];
[self.webView loadHTMLString:webHTML baseURL:[NSURL URLWithString:@"http://mobile.twitter.com"]];
hasLoaded = YES;
}
}

它将代码上的 device-with 更改为 320,这很完美,但是......当 webview 重新加载(使用新代码)时,我得到了旧的(非常旧的)twitter web 应用程序,而不是当前的。知道如何解决这个问题吗?

最佳答案

这似乎是一个更好的解决方案,因为它不需要重新加载 HTML:https://stackoverflow.com/a/6104537/1449618

以下适用于我在 iPad 上的应用。

然后将自己设置为 UIWebViewDelegate:

- (void)webViewDidFinishLoad:(UIWebView *)webView {
[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.querySelector('meta[name=viewport]').setAttribute('content', 'width=%d;', false); ", (int)webView.frame.size.width]];
}

关于iphone - 在 UIWebView 中获取 iPhone 的移动 twitter webapp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9639275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com