私はこれについてたくさんの質問を読んだが、私が探しているものを達成するようなものはない...だから、私はUIViewController
の中に任意のUIWebView
があると言うことができる。 UIViewController
には正常に動作するSwipeGestureRecognizer
があります。スクロールバーがない場合でも、UIWebView
内で動作します。 (ページをロードする前、またはUIWebView
のサイズ内に適切に収まるページをロードしても)。ただし、水平スクロールが必要なWebページを左または右にロードすると、ビュー内のUIWebView
部分にスワイプジェスチャーが認識されません。クリック/ドラッグ/スワイプするたびにスクロールアクションが開始されます。 「スワイプ」と指でスクロールする(スクロールするのではなく、スクロールする)ことを区別する方法はありますか?UIWebView内のスワイプジェスチャ認識
答えて
UIWebViewをサブクラス化し、ジェスチャ認識者の呼び出しを無効にする必要があります。
EDIT - この記事Handling touches inside UIWebviewを見て、このリンクhttp://mithin.in/2009/08/26/detecting-taps-and-events-on-uiwebview-the-right-way/
はい、あなたはあなた自身のUISwipeGestureRecognizerが失敗したときにそのUIPanGestureRecognizerにのみ発動する必要があることのUIWebViewのUIScrollViewのを伝えることができます。
これは、あなたがそれを行う方法です:あなたのためにトリックを行う必要があります
UISwipeGestureRecognizer *rightSwipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeGesture:)];
UISwipeGestureRecognizer *leftSwipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeGesture:)];
rightSwipeGesture.direction = UISwipeGestureRecognizerDirectionRight;
leftSwipeGesture.direction = UISwipeGestureRecognizerDirectionLeft;
[self.view addGestureRecognizer:rightSwipeGesture];
[self.view addGestureRecognizer:leftSwipeGesture];
[_webView.scrollView.panGestureRecognizer requireGestureRecognizerToFail:rightSwipeGesture];
[_webView.scrollView.panGestureRecognizer requireGestureRecognizerToFail:leftSwipeGesture];
。
をご覧ください。 –
天才、私の多くの時間を節約! –
これはテストしていませんが、UIWebviewのデフォルトのスクロールを上書きすると思います。これは正しい? –
Johannes Fahrenkrug's answerは、WebViewの組み込みパンジェスチャを条件付きでブロックすることに成功しました。しかし、これは、WebViewのパンジェスチャーが非常に遅い場合にのみ機能することが判明しました。私が任意の合理的なスピードでWebViewをパンすると、スワイプジェスチャーがトリガーされました。私はスワイプのジェスチャーを起動するための高速スワイプと、デフォルトのWebViewスクロール機能を使用する中程度または遅いパンだけを必要としていました。
UISwipeGestureRecognizerは、スワイプの速度をカスタマイズするためのプロパティがありません、とUIPanGestureRecognizerは、速度特性が、必要な速度を設定する方法はありませんを持っているので、私はthis tutorialに基づいてカスタムジェスチャー認識の設定:
をFastSwipeGestureRecognizer.h
#import <UIKit/UIKit.h>
#import <UIKit/UIGestureRecognizerSubclass.h>
#define REQUIRED_TOUCHES 5
#define REQUIRED_STRAIGHTNESS 3
#define REQUIRED_TIME .1
typedef enum {
DirectionUp = 0,
DirectionRight,
DirectionDown,
DirectionLeft
} Direction;
@interface FastSwipeGestureRecognizer : UIGestureRecognizer {
CGPoint firstTouchLocation;
NSTimeInterval firstTouchTime;
int touchesCount;
Direction direction;
}
@property (nonatomic) CGPoint firstTouchLocation;
@property (nonatomic) NSTimeInterval firstTouchTime;
@property (nonatomic) int touchesCount;
@property (nonatomic) Direction direction;
@end
FastSwipeGestureRecognizer.m
そして、受け取ったジェスチャー- (void)handleSwipeGesture:(FastSwipeGestureRecognizer *)gesture {
if (gesture.state == UIGestureRecognizerStateEnded) {
if (gesture.direction == DirectionRight) {
// do something
} else if (gesture.direction == DirectionLeft) {
// do something
} else if (gesture.direction == DirectionUp) {
// do something
} else if (gesture.direction == DirectionDown) {
// do something
}
}
}
これが唯一の4つのすべてのスワイプ方向を処理するために1つのジェスチャーを必要とすることに注意してください、代わりの方向を検出し、あなたのジェスチャー
FastSwipeGestureRecognizer *swipeGesture = [[FastSwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeGesture:)];
[self.view addGestureRecognizer:swipeGesture];
[self.webView.scrollView.panGestureRecognizer requireGestureRecognizerToFail:swipeGesture];
を設定
1方向につき1つのUISwipeGestureRecognizer。
- 1. 適切なスワイプジェスチャ認識機能iOS
- 2. アプリ内のバーコード認識
- 3. バッチファイル内のコンテキスト認識メニュー
- 4. UIWebview単語識別名
- 5. uitableview内のUiwebview
- 6. UIWebView内のボタンイベント
- 7. Swiftのレイヤー内のオブジェクトを認識
- 8. iOS UIwebView認証Cookie
- 9. アセンブリコード内の変数を認識
- 10. C#ソースコード内のコメントを認識する
- 11. iOS UIScrollView内のUIWebView
- 12. UIWebViewでジェスチャ認識機能を見つける方法はありますか?
- 13. UIWebView内のウェブページをスクロール
- 14. テーブルビューセル内のハイライトuiwebviewテキスト
- 15. 音声認識音声認識 - Ionic 2
- 16. スピーカーの認識
- 17. UIWebViewのクライアント証明書認証iOS
- 18. スウィフトスワイプジェスチャー認識のクラッシュプログラム
- 19. イメージセグメンテーション - オブジェクトの認識
- 20. Pythonの.JPEG認識
- 21. タイプのJavaScript認識
- 22. C#の顔認識
- 23. データ型の認識
- 24. matlabのニューラルネットワークパターン認識
- 25. UILabelロングプレスの認識
- 26. アンドロイドの顔認識?
- 27. ビデオストリームのハンドジェスチャ認識
- 28. イメージのパターン認識
- 29. pywinautoのカスタムコンボボックス認識
- 30. オブジェクト認識のバージョン
これについてどうやって説明してください。ドキュメントでは、 "UIWebViewクラスはサブクラス化されるべきではありません"と書かれています。 http://developer.apple.com/library/ios/#documentation/uikit/reference/UIWebView_Class/Reference/Reference.html – MrHappyAsthma
編集 –