1

バックジェスチャに関するStack Overflowの別の投稿を見てきましたが、私のものは少し異なります。

スワイプジェスチャを実装して「戻る」と「進む」に移動し、カーソルが置かれている WebView に影響を与えるにはどうすればよいですか? たとえば、複数ある場合、ジェスチャは適切なビューに移動して影響を与えます。

次のコードになると思いますが、ジェスチャ メソッドを機能させる方法がわかりません。

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

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

「theWebView」は、カーソルが置かれている WebView です。

これは可能ですか?

4

3 に答える 3

2

swipeWithEvent メソッドを使用してカテゴリを webView に追加し、各ビューが独自のスワイプを処理できるようにすることができます (3 本指の種類。2 本指のスクロールは 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 を使用している場合は、各ビューに 2 つの UISwipeGestureRecognizer をアタッチします。各方向に 1 つずつ、個別のアクションがあります。

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

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

あなたのviewControllerをターゲットとして。各ジェスチャ アクションは送信者に渡されるため、sender.view はどのビューにスワイプがあったかを示します。

プログラムが実行されているシステムのトラックパッド コントロール パネルで、[3 本指のスワイプで移動] がオンになっている必要があることに注意してください。

于 2012-05-02T19:24:44.053 に答える
0

2本の指でスワイプする場合は、https://github.com/Kapeli/SwipableWebViewを確認してください。

于 2012-12-23T19:15:22.000 に答える
0

独自のカスタム ジェスチャを作成できますが、タッチの開始、タッチの移動、およびタッチの終了を実装する必要があります。最良の方法は、startPoint という名前の CGPoint と、endPoint という名前の 2 番目の CGPoint を持つことです。タッチが開始されると、タッチの位置が startPoint に保存されます。終了したタッチでは、endPoint に終点を格納します。バックスワイプかどうかを確認するには、2 つのポイントの x 値を比較します。タッチの受信に関するリンクは次のとおりです: http://mobile.tutsplus.com/tutorials/iphone/ios-quick-tip-detecting-touches/
これがお役に立てば幸いです!

于 2012-05-02T19:11:03.733 に答える