iOS 手勢

手勢類型

  • UITapGestureRecognizer(敲擊)

  • UIPinchGestureRecognizer(捏合,用于縮放)

  • UIPanGestureRecognizer(拖拽)

  • UISwipeGestureRecognizer(輕掃)

  • UIRotationGestureRecognizer(旋轉)

  • UILongPressGestureRecognizer(長按)

監聽手勢的方式

  1. 創建手勢:UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] init];

  2. 設置手勢相應的屬性:

    // 連續敲擊2次
    tap.numberOfTapsRequired = 2;
    // 需要2根手指一起敲擊
    tap.numberOfTouchesRequired = 2;
    
  3. 將手勢添加到view上:[self.iconView addGestureRecognizer:tap];

  4. 監聽手勢的觸發:[tap addTarget:self action:@selector(tapIconView:)]

手勢的狀態:

// 沒有觸摸事件發生,所有手勢識別的默認狀態
UIGestureRecognizerStatePossible,
// 一個手勢已經開始但尚未改變或者完成時
UIGestureRecognizerStateBegan,
// 手勢狀態改變
UIGestureRecognizerStateChanged,
// 手勢完成
UIGestureRecognizerStateEnded,
// 手勢取消,恢復至Possible狀態
UIGestureRecognizerStateCancelled, 
// 手勢失敗,恢復至Possible狀態
UIGestureRecognizerStateFailed,
// 識別到手勢識別
UIGestureRecognizerStateRecognized = UIGestureRecognizerStateEnded

手勢的代理 < UIGestureRecognizerDelegate >

  • 當想給一個view同時添加幾個手勢的時候,在手勢的這個代理方法返回yes,表示允許同時識別多個手勢
    - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer;

觸發手勢后的動作

  • 要想根據手勢的內容,做出相應的動作,就把手勢傳過來
  • 要想根據手勢的偏移量設置view的位置的時候,有時需要對手勢的一些變量進行復位,它們可能是根據初始點來計算的。(了解就行,到用時,具體情況具體對待)
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容