iOSジェスチャー-UIGestureRecognizer

元のリンク

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;
    

    //ジェスチャエージェント
    @PropertyNullablenonatomicweakID < UIGestureRecognizerDelegate >デリゲート;

    //ジェスチャーは(デフォルトで使用可能)が利用可能である
    ジェスチャー認識可能な場合、このジェスチャーを修正しない//され
    @Property非アトミックゲッター= ISENABLED)BOOLが有効、

    //ジェスチャービュー
    @PropertyNULL可能非アトミック読み取り専用のUIView *ビュー。

    @property非アトミックBOOL cancelsTouchesInView;
    @property非アトミックBOOL delaysTouchesBegan;
    @property非アトミックBOOL delaysTouchesEnded;

    @propertynonatomiccopyNSArray < NSNumber *> * allowedTouchTypes
    @propertynonatomiccopyNSArray < 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;

    //場所でのタッチ数を取得します

    • NSUIntegernumberOfTouches ;

    //特定のコーナーマークのタッチ位置を取得します

    • 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_IOS7 _0);

    • BOOL)gestureRecognizer :( UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer :( UIGestureRecognizer *)otherGestureRecognizer NS_AVAILABLE_IOS7 _0);

    @終わり

    6.UIGestureRecognizerのサブクラス

    6.1。タップジェスチャー
    6.2。ピンチジェスチャ-ズーム用
    6.3。ドラッグジェスチャ
    6.4。スワイプジェスチャー
    6.5。回転ジェスチャー
    6.6。長押しジェスチャー

おすすめ

転載: blog.csdn.net/Draven__/article/details/90576924