Tag: uiwebview

内存泄漏与UIWebView和Javascript

我正在尝试解决一些我的UIWebView导致的泄漏,无法find它们的原点,也没有解决方法。 我所做的是通过networking请求从networking获取一些内容,然后组装我的HTML并将其实时加载: NSString* body = <some HTML>; NSString* html = [NSString stringWithFormat:kHTMLTemplate, [self scripts], [self styles], body]; [_webView loadHTMLString:html baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]]; 每次有新的内容可用时,我再次执行loadHTMLString来刷新Web视图。 我重复使用相同的Web视图,相同的控制器,相同的一切。 仪器显示了一个非常奇怪的模式,其中所有泄漏的对象是各种大小的通用块,并且它们都没有附加任何信息:没有负责任的库,没有负责任的框架等。每次执行loadHTMLString时, loadHTMLString添加新的泄漏。 看来有关于UIWebView泄漏内存的几个线程。 我已经尝试了所有我发现的build议(例如,将NSURLCache设置为零,或重置它;我试图释放现有的UIWebView,并分配一个新的每次我有新的数据等),但没有任何帮助。 到目前为止,我的调查导致了一个清晰的结果:似乎只有当我加载到视图中的HTML包含一些Javascript时才会出现泄漏。 如果你注意到上面的htmlstring,它由几个组件组成; 一个是[self scripts] ,它是一个简单地返回的函数: return @"<script type='text/javascript' src='jquery-1.4.4.min.js'></script>" "<script type='text/javascript' src='jmy.js'></script>"; 如果我删除这个,没有泄漏。 但是当我向我的HTML中添加一个<script>标记时就会出现泄漏。 他们甚至出现,如果我只是简单地包括jquery文件(或任何其他js文件,对此): return @"<script type='text/javascript' src='jquery-1.4.4.min.js'></script>"; 所以,这个问题:有没有人知道这里发生了什么? 清楚地包括一个JavaScript文件到我的HTML是使UIWebView泄漏内存。 事实上,当我重用相同的UIWebView对象时,或者当我每次有内容时都实例化一个新的对象时,都会出现泄漏,这让我认为javascript文件必须以某种方式处理loadHTMLString ,从而导致泄漏。 有谁知道如何解决这个问题?

未调用UIWebView webViewDidLoadFinish方法

今天晚上我一直在玩networking浏览器,但遇到了一些问题。 出于某种原因,我无法获得webViewDidStartLoad或webViewDidFinishLoad方法触发。 在我的故事板中,我有一个叫做webView的出口,链接到我的UIWebView元素。 有没有人能够帮助我做我做错了什么? 这是我的viewController.swift文件: import UIKit class ViewController: UIViewController, UIWebViewDelegate { @IBOutlet var webView : UIWebView var url = NSURL(string: "http://google.com") override func viewDidLoad() { super.viewDidLoad() //load initial URL var req = NSURLRequest(URL : url) webView.loadRequest(req) } func webViewDidStartLoad(webView : UIWebView) { //UIApplication.sharedApplication().networkActivityIndicatorVisible = true println("AA") } func webViewDidFinishLoad(webView : UIWebView) { //UIApplication.sharedApplication().networkActivityIndicatorVisible = […]

在uiwebview中播放YouTubevideo。 如何处理“完成”button?

我有一个uiwebview播放YouTubevideo。 我如何处理完成的button操作? 现在,当我点击完成button时,它会变回到我的应用程序主菜单(而不是本应该解雇的菜单),它只是冻结。 任何人都可以帮我吗? Ps:uiwebview所在的菜单,以前是以模态方式呈现的。

UIWebViewDelegate:webViewDidFinishLoad在页内导航期间不被调用

我有一个应用程序,用户可以浏览一堆本地存储的HTML文件。 我有一个UIWebView ,用UIWebViewDelegate正确configuration。 通常,当用户关注链接时, shouldStartLoadWithRequest被调用,随后webViewDidFinishLoad被稍后调用。 但是,如果链接指向与当前显示的页面相同的页面上的锚点,则只shouldStartLoadWithRequest 。 webViewDidFinishLoad不会触发。 从某种意义上说,我发现这可能是预期的行为,因为页面内导航不应该要求页面重新加载。 不过,在页内导航完成后,我确实需要一个地方来挂钩调用堆栈。 最佳的解决scheme会让我知道何时导航已经结束,无论是来自另一页,页内和前进/后退动作。 到目前为止,我最好的方法是调用performSelector: withObject: afterDelay:在我的shouldStartLoadWithRequest方法的结尾处​​,但是我对此并不满意。 有谁知道我能如何解决这个问题? 任何洞察赞赏!

检查一个URL是否有http://前缀

在我的应用程序中,当用户添加一个对象时,也可以为这个对象添加一个链接,然后可以在一个webView中打开这个链接。 我试图保存没有http://前缀的链接,然后在webView中打开它,但无法打开它! 在webView开始加载之前,有没有一种方法来检查保存的URL是否有http://前缀? 如果它没有得到它,我怎样才能将前缀添加到URL? 谢谢!

UIWebView Bug: – :无法识别的select器发送到实例

在UIWebView ,如果包含文本的input元素具有焦点,并按下导致input失去焦点的button,则随后双击input以重新获得焦点并从popup栏中select剪切(或复制或粘贴)看起来会导致UIWebView崩溃的错误: -[UIWebView cut:]: unrecognized selector sent to instance 0x10900ca60 演示项目: https : //github.com/guarani/WebViewDoubleTapTestTests.git 我认为这一定是一个UIWebView错误,有什么想法? 为了完整,这里是我的networking视图的内容, <html> <head> </head> <body> <br><br> <input type="text"> <input type="button"> </body> </html> 在苹果提交了一个错误报告:15894403 更新2014/10/15:iOS 8.0.2中仍存在问题(12A405)

UIWebView泄漏,JS垃圾收集器和WebCore虚拟机

我一直在构build一个应用程序的浏览器function,显然与UIWebView工作。 当浏览器打开时,我已经看到了内存跳跃,这是有道理的,但是在泄漏configuration文件中,我看到了一些令人不安的结果: VM:JS垃圾收集器和VM:WebCore可清除的数据只是越来越多,我浏览。 更糟糕的是,当浏览器被释放,并且网页视图被释放时,这些对象仍然存在,占用6MB以上的内存。 我不知道如果我没有正确处理UIWebView,但是在解除分配UIWebView后,这个内存似乎存在问题。 在浏览器被释放之前,我会执行一些清理工作,因为在这篇文章中有详细的说明。但是这似乎没有什么区别。 有没有人有这个问题? 任何洞察力将是真棒。 我已经看到了一些与UIWebView内存问题已经相关的问题,但是他们没有具体的详细描述configuration文件的结果。

iOS UIWebView拦截链接点击

当用户点击UIWebView中的链接并检索链接时是否可以拦截? 我希望阻止UIWebView进入点击链接,并做其他事情。 提前致谢。

单击UIWebView上的链接时打开新的UIViewController

我发现这个线程匹配我的问题: 单击UIWebView中的链接推到NavigationView堆栈 但是,以下情况是不同的:我使用的是基于视图的应用程序,当按下相应的button时,手动切换到不同的视图控制器。 而不是使用链接我使用onClick方法来检测用户点击一个UIWebView上的东西,并试图用一个新的UIWebView打开一个新的ViewController。 将相同的代码工作,还是我必须做出一些改变?

使用iOS 6的iPhone应用程序中embedded的vimeovideo不能播放

我似乎无法获得iOS 6中的任何video。无论是在设备上(iP4)和模拟器。 我有一个UIWebView安装在IB。 然后在我的viewDidLoad我有以下代码: NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://domain.com/app/player.php?vid=%@", [videoDetails objectForKey:@"vid"]]]; NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; [videoWebView loadRequest:requestObj]; 只是为了解释,vimeo上的video设置是只允许托pipe在特定的域上,否则会显示错误消息。 所以我有一些简单的HTML设置在player.php,只是调用VIMEOembedded代码。 当我进入有UIWebView的视图,并且video已经加载,并且您在vimeovideo中看到“play”图标时,点击该图标,然后video显示一个加载图标,然后在大约5-10秒,控制台输出下面的和UIWebView只是变白。 控制台输出: 2013-01-30 16:50:11.809 My App[2807:907] [MPAVController] Autoplay: Enabling autoplay 2013-01-30 16:50:11.821 My App[2807:907] [MPAVController] Autoplay: Skipping autoplay, disabled (for current item: 0, on player: 1) 2013-01-30 16:50:11.831 My App[2807:907] [MPAVController] Autoplay: Enabling autoplay […]