【问题标题】:Can I load new url in UIWebView with push like animation我可以在 UIWebView 中加载新的 url 吗?
【发布时间】:2014-02-03 09:26:04
【问题描述】:

我想在UIWebView 中加载一个网址。然后,当用户单击 HTML 页面上的按钮时,我使用 UIWebView 上的 shouldStartLoadWithRequest 方法拦截单击并告诉 UIWebView 加载新的 url,但重新为 @987654326 的相同实例设置动画@ 就像是一个新的UIWebView 被压入堆栈。另外,我想连接后退按钮功能,基本上做相反的事情。

这可能吗?

【问题讨论】:

标签: javascript ios objective-c uiwebview navigation


【解决方案1】:

我认为,在这种情况下,您无法选择只使用一个 UIWebView。在您的示例中,他们使用翻转动画,但您想要推送并且您的 webView 必须为此使用更多空间。

您可以只使用 webView 数组,处理 webViewDidFinishLoad: 并将它们向右移动。

你也可以只使用翻转动画。

关于连接后退按钮: 您必须自己实现后退按钮。要实现后退按钮,您必须使用 webView 的goBack 方法。

编辑: 我只是了解您使用navigationController 来推送和弹出您的webViews。我认为这是一种不好的做法,因为用户会感到困惑。我们必须使用带有导航控制器的推送和弹出来在不同的逻辑屏幕之间导航。但在这种情况下,我们只是更新我们的内容。

我认为它可以打破 HIG。如果您实现更少的“推送/弹出导航”动画会更好。现在我认为使用另一种类型的动画会更好。这对用户来说更难但不太复杂。

但如果您想使用 navigationController,您可以在 didReceiveMemoryWarning 方法中清理导航堆栈的一部分。

关于navigationController的后退按钮。实际上,这是一个很难回答的问题,答案并不简单:back button callback in navigationController in iOSSetting action for back button in navigation controller

【讨论】:

  • 我的功能和动画效果很好,只需每次推送一个新的 webView。但我试图在这里了解我的内存使用情况。由于单击加载的新 HTML 可能包含重复执行相同操作的链接,因此我担心会打开一堆 webView。虽然,在推送新的 web 视图时,我并没有真正看到内存使用量的大幅增长。您认为在这里我应该尽量避免推动新观点吗?
  • 是的,在没有控制的情况下创建新的 webView 不是一个好主意。例如,我认为您可以限制 webView 的数量并将它们存储在 NSMutableArray 中。您也可以在 viewController 中处理 didReceiveMemoryWarning 并清除最后 5 个之后的所有 webViews。
  • 我喜欢你的第二个推荐。似乎它很容易实现,除非必要,否则不用担心走很长的路。
猜你喜欢
  • 2011-02-16
  • 1970-01-01
  • 1970-01-01
  • 2011-07-12
  • 1970-01-01
  • 1970-01-01
  • 2011-08-04
  • 2011-09-12
  • 1970-01-01
相关资源
最近更新 更多