我在Stack Overflow上看到了关于背部手势的另一篇文章,但我的观点有点不同。
如何实现滑动手势以“返回”和“前进”,以便对光标结束的WebView产生影响?例如,如果有多个,则手势会转到并影响相应的视图。
我想这将是以下代码,但我不知道如何让手势方法起作用:
- (void) backGesture {
[(WebView *)self.theWebView goBack];
}
- (void) forwardGesture {
[(WebView *)self.theWebView goForward];
}
其中'theWebView'是光标悬停的WebView。
这甚至可能吗?
答案 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