1. UIGestureRecognizer
- 親クラスはNSObjectです
-
- ジェスチャレコグナイザーを使用すると、UIGestureRecognizerを使用して、ユーザーが特定のビューで行う一般的なジェスチャを簡単に認識できます。
- UIGestureRecognizerは、すべてのジェスチャの基本的な動作を定義する抽象クラスです。そのサブクラスを使用することによってのみ、特定のジェスチャを処理できます。詳細については、サブクラスの概要を参照してください。
- ジェスチャは一方向のみをサポートできます
- デフォルトでは、1つのジェスチャのみがサポートされています。複数のジェスチャを実装する場合は、ジェスチャプロキシを設定し、<UIGestureRecognizerDelegate>に準拠して実装し
shouldRecognizeSimultaneouslyWithGestureRecognizer
、YESを返す必要があります。
2.ジェスチャ認識のステータス
ジェスチャー状態 意味 UIGestureRecognizerStatePossible タッチイベントは発生しません。すべてのジェスチャ認識のデフォルト状態です。 UIGestureRecognizerStateBegan ジェスチャが開始されたが、変更または完了していない場合 UIGestureRecognizerStateChanged ジェスチャー状態の変化 UIGestureRecognizerStateEnded ジェスチャー完了 UIGestureRecognizerStateCancelled ジェスチャーがキャンセルされ、可能な状態に戻ります UIGestureRecognizerStateFailed ジェスチャが失敗し、可能な状態に戻ります UIGestureRecognizerStateRecognized = UIGestureRecognizerStateEnded ジェスチャ認識 3.UIGestureRecognizerプロパティ
// 手势状态 @property(nonatomic,readonly) UIGestureRecognizerState state;
//ジェスチャエージェント
@Property(Nullable、nonatomic、weak)ID < UIGestureRecognizerDelegate >デリゲート;//ジェスチャーは(デフォルトで使用可能)が利用可能である
ジェスチャー認識可能な場合、このジェスチャーを修正しない//され
@Property(非アトミック、ゲッター= ISENABLED)BOOLが有効、//ジェスチャービュー
@Property(NULL可能、非アトミック、読み取り専用)のUIView *ビュー。@property(非アトミック)BOOL cancelsTouchesInView;
@property(非アトミック)BOOL delaysTouchesBegan;
@property(非アトミック)BOOL delaysTouchesEnded;@property(nonatomic、copy)NSArray < NSNumber *> * allowedTouchTypes
@property(nonatomic、copy)NSArray < NSNumber *> * allowedPressTypes
4. UIGestureRecognizer方法
// 初始化手势,直接用initWithTarget就好,另外两个忽略 // -(void)handleGesture; // -(void)handleGesture:(UIGestureRecognizer*)gestureRecognizer; - (instancetype)initWithTarget:(nullable id)target action:(nullable SEL)action
//モニターを追加し、モニターを削除します
- (void)addTarget :( id)target action:(SEL)action;
- (void)removeTarget :( nullable id)target action :( nullable SEL)action; // targetがnilの場合、同じメソッド名を持つすべてのメソッドを削除します
//タッチの位置を取得します
- (CGPoint)locationInView :( nullable UIView *)view;
//場所でのタッチ数を取得します
- (NSUInteger)numberOfTouches ;
//特定のコーナーマークのタッチ位置を取得します
-
(CGPoint)locationOfTouch :( NSUInteger)touchIndex inView :( nullable UIView *)view;
-
(void)requireGestureRecognizerToFail :( UIGestureRecognizer *)otherGestureRecognizer;
@終わり
5.UIGestureRecognizerのプロキシ--UIGestureRecognizerDelegate
// 是否允许触发当前手势 - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer;
//同時に:sɪml'teɪnɪəslɪ同時に
//複数のジェスチャーを同時にサポートすることは許可されていますか- (BOOL)gestureRecognizer :( UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer :( UIGestureRecognizer *)otherGestureRecognizer;
//タッチジェスチャを受信するかどうか
- (BOOL)gestureRecognizer :( UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch :( UITouch *)touch;
//プレスジェスチャーを受け取るかどうか
-
(BOOL)gestureRecognizer :( UIGestureRecognizer *)gestureRecognizer shouldReceivePress :( UIPress *)press;
-
(BOOL)gestureRecognizer :( UIGestureRecognizer *)gestureRecognizer shouldRequireFailureOfGestureRecognizer :( UIGestureRecognizer *)otherGestureRecognizer NS_AVAILABLE_IOS(7 _0);
-
(BOOL)gestureRecognizer :( UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer :( UIGestureRecognizer *)otherGestureRecognizer NS_AVAILABLE_IOS(7 _0);
@終わり
6.UIGestureRecognizerのサブクラス
6.1。タップジェスチャー
6.2。ピンチジェスチャ-ズーム用
6.3。ドラッグジェスチャ
6.4。スワイプジェスチャー
6.5。回転ジェスチャー
6.6。長押しジェスチャー