WebView中的后退/前进滑动手势

时间:2012-05-02 15:05:46

标签: objective-c macos cocoa gesture

我在Stack Overflow上看到了关于背部手势的另一篇文章,但我的观点有点不同。

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

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

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

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

其中'theWebView'是光标悬停的WebView。

这甚至可能吗?

3 个答案:

答案 0 :(得分:2)

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

web视图+ addSwipe.h:

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

web视图+ 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上使用,请为每个视图附加两个UISwipeGestureRecognizer;每个方向一个,分别采取行动:

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

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

以viewController作为目标。每个手势操作都将发送给发件人,因此sender.view将告诉您哪个视图在其中滑动。

请注意&#34;三指滑动导航&#34;必须在运行程序的系统上的Trackpad控制面板中打开。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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