1

我在 Stack Overflow 上看过另一篇关于后退手势的帖子,但我的有点不同。

如何实现滑动手势以“返回”和“前进”,以对光标结束的 WebView 产生影响?例如,如果有多个,则手势会转到并影响相应的视图。

我想这将是以下代码,但我不知道如何让手势方法起作用:

- (void) backGesture {
    [(WebView *)self.theWebView goBack];
}

- (void) forwardGesture {
    [(WebView *)self.theWebView goForward];
}

'theWebView' 是光标悬停在上面的 WebView。

这甚至可能吗?

4

3 回答 3

2

好吧,您可以使用 swipeWithEvent 方法向 webView 添加一个类别,以便每个视图处理自己的滑动(三指种类;两指滚动转换为 web 视图的鼠标操作)。

WebView+addSwipe.h:

#import <WebKit/WebKit.h>
@interface WebView (addSwipe)
@end

WebView+addSwipe.m:

#import "WebView+addSwipe.h"

@implementation WebView (addSwipe)

- (void)swipeWithEvent:(NSEvent *)event {
    CGFloat deltaX = [event deltaX];
    if (deltaX > 0) {
        NSLog(@"goForward %@ ", self);
        [self goForward];
    } else if (deltaX < 0) {
        NSLog(@"goBack%@ ", self);
        [self goBack];
    }
}

@end

而且,如果你是在 iOS 上,则将两个 UISwipeGestureRecognizers 附加到每个视图;每个方向一个,具有单独的操作:

-(void) backGesture:(UIGestureRecognizer *)sender {
    [sender.view goBack];
}

-(void) forwardGesture:(UIGestureRecognizer *) sender)
    [sender.view goForward];
}

以您的 viewController 作为目标。每个手势动作都会交给一个发送者,所以 sender.view 会告诉你哪个视图中有滑动。

请注意,必须在运行程序的系统上的触控板控制面板中启用“三指滑动导航”。

于 2012-05-02T19:24:44.053 回答
0

您可以创建自己的自定义手势,但您必须实现触摸开始、触摸移动和触摸结束。最好的方法是有一个名为 startPoint 的 CGPoint 和一个名为 endPoint 的第二个 CGPoint。在触摸开始时,您将触摸的位置存储到 startPoint 中。在触摸结束时,您将结束点存储在 endPoint 中。要查看是否是向后滑动,请比较两个点的 x 值!这是接收触摸的链接:http: //mobile.tutsplus.com/tutorials/iphone/ios-quick-tip-detecting-touches/
希望这有帮助!

于 2012-05-02T19:11:03.733 回答
0

对于两次手指滑动,请查看https://github.com/Kapeli/SwipableWebView

于 2012-12-23T19:15:22.000 回答