Tag: uiwebview

如何在iOS中的UIWebView中操作DOM

我在我的应用程序中使用UIWebView。 我想在用户点击UIWebView中的一个网站链接时调用一个Objective-C函数。 有没有办法做到这一点? UIWebView允许改变它吗?

在UIWebView中打开Facebook页面墙的URL不起作用

我试图通过将这个请求传递给UIWebView来显示我的Facebook页面墙(表单http://www.facebook.com/PAGE_NAME?sk=wall的链接)。 除非我在我的应用程序UIWebView中loginFacebook,否则该视图将打开通用页面(http://www.facebook.com/PAGE_NAME)。 即使我没有login,相同的链接在Safari中也能正常工作。我怎样才能使UIWebView显示墙上的页面?

如何更改已经加载的表格单元格的高度?

目前我有webviews加载在自定义的uitableview单元格。 问题是networking视图有可变的大小。 在webViewDidFinishLoad中,我可以根据html文档的实际大小来设置Web视图的大小。 我的问题是在web视图完成加载之前已经将其高度设置在heightForRowAtIndexPath中的表格单元格。 如何在表格单元格已经被加载之后改变它的高度? 理想情况下,我觉得我应该能够使用这样的代码行。 cellW.frame = cellW.cellWebView.frame; 不过,我似乎没有访问heightForRowAtIndexPath中的单元格信息。 我觉得我已经很好地解释了情况,但是你认为我应该发布的任何代码都可以放在这里。 我已经尝试了很多东西(所以有评论和失败的尝试在这个无处不在),但主要的问题是我似乎无法访问正确的地方,如heightForRowAtIndexPath的单元格信息。 如果我甚至可以在webViewDidFinishLoad中以某种方式设置单元格信息,我可以简单地设置单元格的框架,我也在设置Web视图的框架大小。 下面是我的表格单元格子类的设置。 #import <UIKit/UIKit.h> #import "DefinitionsAndConstants.h" @interface UITableViewCellWebView : UITableViewCell { UIWebView *cellWebView; } @property (nonatomic,retain) UIWebView *cellWebView; @end 这是我最后试图使用部分加文的代码。 但是当然,现在没有办法设置表格单元格了,因为cellForRowAtIndexPath是不可分配的。 -(void)webViewDidFinishLoad:(UIWebView *)webViews { [webViews stringByEvaluatingJavaScriptFromString:@"twitterfy()"]; [webViews stringByEvaluatingJavaScriptFromString:@"document.getElementById('tweettext').innerHTML=tweet"]; NSString* h = [webViews stringByEvaluatingJavaScriptFromString:@"getDocHeightMax()"]; int height = [h intValue]; webViews.frame = CGRectMake(0.0f, 0.0f, 320.0f, […]

如何在UIWebView请求中添加自定义HTTP头,我的UIWebView基于Cordova项目?

我的iOS UIWebView页面基于Cordova开源框架,我想在其webview URL请求中添加一些自定义的http头,我的解决scheme是将它们添加到下面的UIWebView委托方法中。 debugging显示标题添加成功,但实际上请求不会带出它们。 使用Wireshark捕获networking数据包,发现只有标准头可用,没有我自定义的。 我的testing是基于模拟器(iOS 7.1),任何有这方面经验的人请一起分享和讨论,谢谢。 – (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { // Add customize http headers in UIWebView request if([request isKindOfClass:[NSMutableURLRequest class]]) { NSMutableURLRequest * mRequest = (NSMutableURLRequest *)request; [mRequest setValue:@"1.1" forHTTPHeaderField:@"appVersion"]; [mRequest setValue:@"iPhone 4S" forHTTPHeaderField:@"deviceModel"]; } return [super webView:webView shouldStartLoadWithRequest:request navigationType:navigationType]; }

UIWebView本地video/audio播放iOS不工作,使用meteor(PhoneGap)

我使用meteor来构build一个非常简单的应用程序(理论上)。 基本上是一个播放button,应该开始一个video。 这听起来很简单,但在iOS UIWebView中如何处理<video>和<audio>标签似乎有些根本性的错误。 我的理解是Meteor使用本地服务器,因此您可以从Meteor应用程序的/public -folder中加载资源文件。 这符合图像的预期: <img src="/images/image.png"> 但是,对video和audio标签执行相同的操作也会引发意外的错误。 远程加载文件也可以正常工作,但是当video/audio成为本地文件系统的一部分时,UIWebView似乎会变得混乱到如何处理它。 我已经用Cordova的File和FileTransfer插件进行了试验,以获取,移动,获取nativeURLs,并重新组织这些文件,使其具有任何意义,但是<video>和<audio>元素仍然会抛出错误。 我甚至尝试将audio文件转换为base64string,并将其直接embedded到标记中。 这也不pipe用。 最后,我尝试了简单的XHR,将文件作为一个blob检索,然后制作一个URL: var xhr = new XMLHttpRequest(); xhr.open("get", "/videos/example.mp4"); xhr.responseType = "blob"; xhr.addEventListener("load", function() { var blob = this.response; var url = window.URL.createObjectURL(blob); $("video")[0].src = url; }); 仍然没有运气。 请注意,我试过的一切工作的图像文件,但不是audio/video。 很难说出问题的起因,UIWebView如何处理请求的video/audio文件,或者Meteor的小型networking服务器设置中的问题,它用于打包的PhoneGap iOS应用程序。 无论如何,是否有解决方法?

用户代理不在NSMutableURLRequest中更改

我知道这可能有几个问题,但是当我尝试为我的UIWebView设置一个新的“用户代理”时,我遇到了问题。 这是我现在正在做的事情: NSURL *myUrl = [NSURL URLWithString:auxUrl]; NSMutableURLRequest *myRequest = [NSMutableURLRequest requestWithURL:myUrl]; NSMutableString *auxUserAgent = [[NSMutableString alloc] initWithString:[myRequest valueForHTTPHeaderField: @"User-Agent"]]; [auxUserAgent appendString:@"(iOS)"]; [myRequest setValue:auxUserAgent forHTTPHeaderField:@"User-Agent"]; NSLog(@"UA : %@",[myRequest valueForHTTPHeaderField: @"User-Agent"]); 我试图追加一些文本到实际的用户代理,并在XCode控制台它确实显示新的用户代理值。 Apple WebKit / 537.51.1(KHTML,如Gecko)Mobile / 11B554a(iOS)应用程序[736:60b] UA:Mozilla / 5.0(iPhone; CPU iPhone OS 7_0_4,如Mac OS X) 但是当我运行我的应用程序,它显示了旧的。 以下是我在UIWebView中显示的网页中显示的用户代理的屏幕截图: 所以..我的问题是:我在想什么? 在系统中是否有某些东西不允许开发人员更改这些数据? 谢谢。

在ios上下载并caching整个网页

我需要下载整个网页并将其存储在应用程序的文档目录中,并在下次用户访问时从caching中加载。 无论我search多less,我总是以ASIWebPageRequest ..结束! 即使它工作,它的旧和不赞成。所以我正在寻找一些替代品。 我试图避免它的另一个原因是因为…. 它是一个完全重新实现的URL加载系统,基于非常低层次的构造(CFNetwork)。 所以,当苹果改进他们的高级库(NSURLConnection,NSCache)时,ASIHTTP并没有得到那些进步。 因此,我尝试从苹果这个示例代码 ,它给了我一个NSData的任何URL我喂它。 但是,当我尝试加载这个NSData到UIWebView使用loadData:MIMEType:textEncodingName:baseURL:方法,我需要指定MIMEtypes为“文本/ HTML”,现在网页中的图像和链接不加载.. ! 有什么其他方式可以用来实现它..? 也许使用NSURLCache ..? 但怎么? 是否有任何其他好的图书馆,我可以使用或者我坚持与ASIWebPageRequest ..? 仅供参考,我需要下载整个网页的所有JS,CSS等

在(BOOL)webView中:如何打开在UIWebView中点击的URL,打开一个Modal UIWebView

感谢您查看我的问题。 让我先描述一下这个应用程序。 我有一个基于标签栏的iOS5.1应用程序使用情节提要和ARC。 每个视图控制器都有四个选项卡,用于显示带有本地HTML文件的web视图(每个视图都是一组不同的html文件)。 目前,当用户触摸http或https链接时,它将在Safari中打开。 不过,我现在希望它通过模态视图在应用程序中打开。 我目前已经创build了界面并准备显示,但是我无法将URL传递给模型的“webview2”。 我已经找了很多例子,使用RSURL和string等,但不能得到任何工作。 一些示例代码似乎不适合我的情况。 在我的FirstViewController.m文件(这是相同的其他意见),我有… – (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType { //Gets the link. if (navigationType == UIWebViewNavigationTypeLinkClicked) { NSURL *URL = [request URL]; NSLog(@"url:%@",request); //Get's the url itself //If it's an external link… if ([[URL scheme] isEqualToString:@"http"] || [[URL scheme] isEqualToString: @"https" ]) { [[UIApplication sharedApplication] openURL:[request URL]]; NSLog(@"Opened in […]

检测并拦截UIWebView中的video播放

我想拦截一个UIWebView的点击,然后使用video的URL。 这怎么可能? 我发现一个有点类似的post,指出遇到了 webView:shouldStartLoadWithRequest:navigationType: 代表。 我似乎无法得到这个代表的video加载的url。 我试图让代码在iOS8中工作

显示键盘后,UIWebView上的scalesPageToFit会断开吗?

我有这个元标记: <meta name="viewport" content="width=768, minimum-scale=1.0, user-scalable=no" /> 我正在设置scalesPageToFit: webView.scalesPageToFit = YES; 起初这工作正确。 当我从纵向到横向放大时,设备的宽度始终为768px。 我可以来回没有问题(肖像< – >风景)。 只要我激活虚拟键盘,无论是通过contentEditable还是文本区域,即使在closures键盘之后,它都会完全停止工作。 这是UIWebView中的错误吗? 还有什么我需要做的,以使这项工作? 有没有可以使用的解决方法? 宽度,不pipe方向,必须是768px。