iPhone:在UIWebView之间水平滚动以在URL历史记录中来回移动

iPhone:在UIWebView之间水平滚动以在URL历史记录中来回移动,iphone,ios,ios6,uiwebview,uiscrollview,Iphone,Ios,Ios6,Uiwebview,Uiscrollview,我目前在MainViewController中有一个Web视图,我允许用户左右滑动手势,以便在url历史记录中来回移动(滑动手势调用UIWebView类的“goBack”和“goForward”实例方法)。虽然功能正常,但我希望通过让滑动手势在旧的和最近查看的网络视图/网站之间平稳过渡来改善用户体验(类似于在滚动视图中在页面之间过渡的体验)。然而,我不确定最好的方法是什么。。。苹果公司特别将此说明放在他们的: 重要提示:不应在UIScrollView对象中嵌入UIWebView或UITableV

我目前在MainViewController中有一个Web视图,我允许用户左右滑动手势,以便在url历史记录中来回移动(滑动手势调用UIWebView类的“goBack”和“goForward”实例方法)。虽然功能正常,但我希望通过让滑动手势在旧的和最近查看的网络视图/网站之间平稳过渡来改善用户体验(类似于在滚动视图中在页面之间过渡的体验)。然而,我不确定最好的方法是什么。。。苹果公司特别将此说明放在他们的:

重要提示:不应在UIScrollView对象中嵌入UIWebView或UITableView对象。如果这样做,可能会导致意外行为,因为两个对象的触摸事件可能会混淆并错误处理。

如何在我的应用程序中实现这类功能并改善应用程序的用户体验

提前谢谢

是的, 您可以轻松地子类化
UIWebView
,并实现

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
这样:

//ViewController.h

@interface APWebView : UIWebView
@end

@interface APViewController : UIViewController <UIGestureRecognizerDelegate>
{
    IBOutlet APWebView *_webview;
}
@end
在Xib(或故事板)上添加UIWebView并指定子类:

在控制台日志中,您应该看到:

2013-10-16 09:51:33.861 SwipeLR[14936:a0b] LEFT
2013-10-16 09:51:34.377 SwipeLR[14936:a0b] RIGHT
2013-10-16 09:51:35.009 SwipeLR[14936:a0b] LEFT
[...]

希望这能有所帮助。

谢谢@elpsk的回答!这将允许自定义webView检测滑动手势,但我想知道如何让这些手势在屏幕上/下移动webView,以便在用户的URL历史记录中前后移动?例如,从概念上讲,我希望用户从一个webView开始,但当他们导航到另一个URL时,将创建一个新的webView,并且两个视图都将是scrollView的一部分,以允许用户无缝地来回滑动(类似于苹果气象应用程序中的功能)。这有意义吗?是的,有意义。您可以在webview上检测滑动或平移,接下来,制作webview的屏幕截图,在屏幕上拖动它(屏幕截图)以模拟存在另一个webview。拖动结束后,从历史记录中向后或向前加载。您还可以应用旋转效果,如Android上的Google Chrome。这很有趣,试试看,让我知道!谢谢大家对@elpsk的信任!你能给我一点代码让我开始吗?或者是否已经有一些开源软件可以实现和更新?当用户将当前视图拖离屏幕时,您是否可能需要维护3个屏幕截图(后退、当前和前进图像),以便查看新的网络视图(后退或前进)?此答案可以帮助您。这是一个类似的问题:
2013-10-16 09:51:33.861 SwipeLR[14936:a0b] LEFT
2013-10-16 09:51:34.377 SwipeLR[14936:a0b] RIGHT
2013-10-16 09:51:35.009 SwipeLR[14936:a0b] LEFT
[...]