我正在我的应用程序中开发类似功能,这是我目前为止的想法 - 我还没有完成,但这里有一个开始的方法。
首先,我假设您只为 iOS 7 开发 - 虽然完全有可能为 iOS 6 构建这个,但如果您只为 7 开发,您可以采取一些简洁的捷径。
前进/后退手势由UIScreenEdgePanGestureRecognizer 处理。您可以像这样将其添加到 Web 视图中:
UIScreenEdgePanGestureRecognizer *bezelSwipeGestureRecognizer = [[UIScreenEdgePanGestureRecognizer alloc] initWithTarget:self action:@selector(swipeBack:)];
bezelSwipeGestureRecognizer.edges = UIRectEdgeLeft;
bezelSwipeGestureRecognizer.delegate = self;
[self.view addGestureRecognizer:bezelSwipeGestureRecognizer];
UIView *invisibleScrollPreventer = [UIView new];
invisibleScrollPreventer.frame = CGRectMake(0, 0, 10, self.view.frame.size.height);
[self.view addSubview:invisibleScrollPreventer];
这将添加向后滑动手势。棘手的部分是 invisibleScrollPreventer - 这是一个不完美的 hack,但它会避免滚动你的 web 视图而不是执行返回操作。 (可能有更好的方法来处理这个问题,但这是我目前的解决方案。)
在您的 swipeBack: 方法中,您将执行以下操作:
-(void)swipeBack:(UIScreenEdgePanGestureRecognizer *)recognizer
{
if (recognizer.state == UIGestureRecognizerStateEnded) {
if (_webView.canGoBack) {
[_webView goBack];
}
}
}
您将执行相同的操作以将 goForward: 方法添加到您的 Web 视图。
真正的技巧是让您在向后或向前滑动时返回(或向前)的网页出现在屏幕上,就像在 iOS 7 中的 Safari 中一样。 '我不是 100% 确定如何做到这一点(我还没有在我的应用程序中构建该功能,但我很快就会),我猜这是一个 iOS 7 snapshotView 应用了一些变暗。
根据您选择的构建方式,您可能还想查看custom navigation transitions in iOS 7。我不知道这个问题是否需要,但可能是。
祝你好运!