正確使用 iOS 開發中的六大操作手勢

發表於2016-10-24

在 iOS 的開發過程中,我們一般使用 touches 方法來監聽 view 的觸控事件,但是這樣使用會有一些弊端:

  1. 必須得自定義 view, 在自定義的 View 當中去實現 touches 方法
  2. 由於是在 view 內部的 touches 方法中監聽觸控事件,因此預設情況下,無法讓其他外界物件監聽 view 的觸控事件
  3. 不容易區分使用者具體的手勢行為

鑑於這些問題,在iOS 3.2 之後,蘋果推出了手勢識別功能(Gesture Recognizer)在觸控事件處理方面大大簡化了開發者的開發難度。

UIGestureRecognizer 手勢識別器

  • 利用 UIGestureRecognizer,能輕鬆識別使用者在某個 view 上面做的一些常見手勢
  • UIGestureRecognizer 是一個抽象類,定義了所有手勢的基本行為,使用它的子類才能處理具體的手勢
    1. 點按手勢 UITapGestureRecognizer
    2. 長按手勢 UILongPressGestureRecognizer
    3. 平移(拖拽)手勢 UIPanGestureRecognizer
    4. 輕掃手勢 UISwipeGestureRecognizer
    5. 旋轉手勢 UIRotationGestureRecognizer
    6. 捏合手勢 UIPinchGestureRecognizer
  • 手勢的使用方法
    1. 建立手勢
    2. 新增手勢
    3. 實現手勢方法
    4. 補充(手勢也可以設定代理)

1. UITapGestureRecognizer 點按手勢

正確使用 iOS 開發中的六大操作手勢

點按手勢效果圖

  • 實現代理方法

2. UILongPressGestureRecognizer 長按手勢

正確使用 iOS 開發中的六大操作手勢

長按手勢效果圖

3. UIPanGestureRecognizer 平移(拖拽)手勢

正確使用 iOS 開發中的六大操作手勢

平移(拖拽)手勢效果圖

4. UISwipeGestureRecognizer 輕掃手勢

正確使用 iOS 開發中的六大操作手勢

輕掃手勢效果圖
  • 一個手勢只能對應一個方向,若要支援多個方向,可以新增多個手勢
  • 輕掃手勢的方向預設是向右
  • 可以通過修改手勢的 direction 屬性修改手勢的方向

5. UIRotationGestureRecognizer 旋轉手勢

正確使用 iOS 開發中的六大操作手勢

旋轉手勢效果圖

6. UIPinchGestureRecognizer 捏合手勢

正確使用 iOS 開發中的六大操作手勢

捏合手勢效果圖

補充:手勢的混合使用

  • 預設情況下只能同時支援一種手勢
  • 若要同時支援多種手勢,可以給要支援的手勢設定代理,並實現以下代理方法

正確使用 iOS 開發中的六大操作手勢

旋轉與捏合混合手勢使用效果圖

至此,iOS 開發中的 6 種手勢操作已經介紹完畢了,大家可以通過設定多種手勢混合使用來達到一定的效果,希望大家都能更上一層樓!

相關文章