最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS開發(fā)之手勢識別

 更新時間:2016年04月28日 08:55:09   作者:執(zhí)著丶執(zhí)念  
本文給大家匯總介紹了在IOS開發(fā)中我們經(jīng)常需要用到的手勢識別的相關知識,非常的細致全面,有需要的小伙伴可以參考下

一、UIGestureRecognizer簡單介紹

我們已經(jīng)學習了觸摸事件處理,但觸摸事件處理起來很麻煩,每個觸摸事件處理都需要實現(xiàn)3個touches方法,比較繁瑣,實際上我們可以使用更加簡單的觸摸事件處理操作,那就是 手勢識別UIGestureRecognizer 。

手勢識別操作基類UIGestureRecognizer不能直接使用,我們常使用的是它的子類,這些手勢操作類都繼承自UIGestureRecognizer類

常用手勢識別子類:

點按手勢 UITapGestureRecognizer
捏合手勢 UIPinchGestureRecognizer
拖動手勢 UIPanGestureRecognizer
輕掃手勢 UISwipeGestureRecognizer【4個方向分離】
旋轉手勢 UIRotationGestureRecognizer
長按手勢 UILongPressGestureRecognizer

二、UIGestureRecognizer屬性

對象屬性:

復制代碼 代碼如下:

@property (nonatomic , readonly) UIGestureRecognizerState state;/*< 手勢狀態(tài) */
@property (nonatomic , getter=isEnabled) BOOL enabled;/*< 手勢是否可用 */
@property (nonatomic , readonly) UIView *view;/*< 觸發(fā)手勢的視圖 */
@property (nonatomic , assign) BOOL delaysTouchesBegan;/*< 手勢識別失敗前不執(zhí)行觸摸開始事件,默認為NO */

手勢識別狀態(tài)state:

復制代碼 代碼如下:

typedef NS_ENUM(NSInteger, UIGestureRecognizerState) {
    UIGestureRecognizerStatePossible,   // 尚未識別是何種手勢操作(但可能已經(jīng)觸發(fā)了觸摸事件),默認狀態(tài)
    UIGestureRecognizerStateBegan,      // 手勢已經(jīng)開始,此時已經(jīng)被識別,但是這個過程中可能發(fā)生變化,手勢操作尚未完成
    UIGestureRecognizerStateChanged,    // 手勢狀態(tài)發(fā)生轉變
    UIGestureRecognizerStateEnded,      // 手勢識別操作完成(此時已經(jīng)松開手指)
    UIGestureRecognizerStateCancelled,  // 手勢被取消,恢復到默認狀態(tài)
    UIGestureRecognizerStateFailed,     // 手勢識別失敗,恢復到默認狀態(tài)
    UIGestureRecognizerStateRecognized = UIGestureRecognizerStateEnded // 手勢識別完成,同UIGestureRecognizerStateEnded
};

左圖為 短手勢 的狀態(tài)轉變,右圖為 長手勢 的狀態(tài)轉變

三、UIGestureRecognizer方法

復制代碼 代碼如下:

#pragmX mark 添加觸摸執(zhí)行事件
- (void)addTarget:(id)target action:(SEL)action;
#pragma mark 移除觸摸執(zhí)行事件
- (void)removeTarget:(id)target action:(SEL)action;
#pragma mark 觸摸點的個數(shù)(同時觸摸的手指數(shù))
- (NSUInteger)numberOfTouches;
#pragma mark 在指定視圖中的相對位置
- (CGPoint)locationInView:(UIView*)view;
#pragma mark 觸摸點相對于指定視圖的位置
- (CGPoint)locationOfTouch:(NSUInteger)touchIndex inView:(UIView*)view;
#pragma mark 指定一個手勢需要另一個手勢執(zhí)行失敗才會執(zhí)行
- (void)requireGestureRecognizerToFail:(UIGestureRecognizer *)otherGestureRecognizer;

四、UIGestureRecognizer使用

復制代碼 代碼如下:

# 創(chuàng)建手勢識別器對象
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] init];
# 設置手勢識別器對象的具體屬性
tap.numberOfTapsRequired = 2;  // 連續(xù)敲擊2次
tap.numberOfTouchesRequired = 2;// 需要2根手指一起敲擊 
# 添加手勢識別器到對應的view上
[self.myView addGestureRecognizer:tap];
# 監(jiān)聽手勢的觸發(fā)
[tap addTarget:self action:@selector(tapView:)];

五、多手勢沖突

在iOS中,如果一個手勢A的識別部分是另一個手勢B的子部分,默認情況下A就會先識別,B就無法識別了,

比如拖動手勢A和輕掃手勢B,輕掃手勢只在手勢結束狀態(tài)才能執(zhí)行,而拖動手勢在手勢開始的時候執(zhí)行,這兩個手勢一起觸發(fā),輕掃手勢就成了犧牲品。

解決手勢沖突,就是利用一個方法:

復制代碼 代碼如下:

-(void)requireGestureRecognizerToFail:(UIGestureRecognizer *)otherGestureRecognizer

該方法指定一個手勢需要另外一個手勢識別失敗才會執(zhí)行

比如解決拖動手勢和輕掃手勢沖突:

復制代碼 代碼如下:

// 拖動手勢的執(zhí)行需要右輕掃手勢的失敗為前提
[panGesture requireGestureRecognizerToFail:swipeGestureToRight];
// 拖動手勢的執(zhí)行需要左輕掃手勢的失敗為前提
[panGesture requireGestureRecognizerToFail:swipeGestureToLeft];

六、UIGestureRecognizerDelegate代理

代理方法:

復制代碼 代碼如下:

#pragma mark 一個控件識別手勢后是否沿著響應者鏈條繼續(xù)傳播手勢識別,默認返回NO
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer;

用該代理方法可以實現(xiàn)兩個不同控件的手勢同時執(zhí)行,需要讓該方法返回YES,手勢識別就能傳遞給不同控件

相關文章

  • iOS輸入框(UITextField)密碼明暗文切換方法

    iOS輸入框(UITextField)密碼明暗文切換方法

    這篇文章主要介紹了iOS輸入框(UITextField)密碼明暗文的切換方法,代碼簡短實用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • 詳解iOS 裁剪圓形圖像并顯示(類似于微信頭像)

    詳解iOS 裁剪圓形圖像并顯示(類似于微信頭像)

    本篇文章主要介紹了iOS 裁剪圓形圖像并顯示(類似于微信頭像),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • iOS實現(xiàn)圖片輪播器

    iOS實現(xiàn)圖片輪播器

    這篇文章主要為大家詳細介紹了iOS如何實現(xiàn)圖片輪播器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • IOS 文件讀寫操作詳解及簡單實例

    IOS 文件讀寫操作詳解及簡單實例

    這篇文章主要介紹了IOS 文件讀寫操作詳解及簡單實例的相關資料,需要的朋友可以參考下
    2017-04-04
  • 詳解iOS應用中自定義UIBarButtonItem導航按鈕的創(chuàng)建方法

    詳解iOS應用中自定義UIBarButtonItem導航按鈕的創(chuàng)建方法

    這篇文章主要介紹了iOS應用中自定義UIBarButtonItem導航按鈕的創(chuàng)建方法,文中舉了一個自定義圖片的UIBarButtonItem實例,比較具有代表性,需要的朋友可以參考下
    2016-04-04
  • iOS開發(fā)之(APNS)遠程推送實現(xiàn)代碼 附證書與真機調試

    iOS開發(fā)之(APNS)遠程推送實現(xiàn)代碼 附證書與真機調試

    這篇文章主要為大家詳細介紹了iOS開發(fā)之(APNS)遠程推送實現(xiàn)代碼,附證書與真機調試,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • 淺析iOS的Xcconfig

    淺析iOS的Xcconfig

    本篇文章介紹IOS中Xcconfig的相關知識內(nèi)容,有興趣的朋友學習下吧。
    2018-01-01
  • iOS App開發(fā)中的UISegmentedControl分段組件用法總結

    iOS App開發(fā)中的UISegmentedControl分段組件用法總結

    UISegmentedControl主要被用來制作分頁按鈕或添加跳轉到不同位置的標簽,這里我們就來看一下iOS App開發(fā)中的UISegmentedControl分段組件用法總結,需要的朋友可以參考下
    2016-06-06
  • IOS本地日志記錄解決方案

    IOS本地日志記錄解決方案

    我們在項目中日志記錄這塊也算是比較重要的,有時候用戶程序出什么問題,光靠服務器的日志還不能準確的找到問題。本文詳細介紹了IOS本地日志記錄解決方案。下面跟著小編一起來看下吧
    2017-03-03
  • iOS 斷點上傳文件的實現(xiàn)方法

    iOS 斷點上傳文件的實現(xiàn)方法

    這項目開發(fā)中,有時候我們需要將本地的文件上傳到服務器,簡單的幾張圖片還好,但是針對iPhone里面的視頻文件進行上傳,為了用戶體驗,我們有必要實現(xiàn)斷點上傳。這篇文章主要介紹了iOS 斷點上傳文件的實現(xiàn)方法,需要的朋友可以參考下
    2017-12-12

最新評論

改则县| 陵水| 叙永县| 北海市| 抚宁县| 靖江市| 潼南县| 昭平县| 兴安县| 东平县| 闽清县| 汾西县| 于田县| 佛坪县| 和硕县| 道孚县| 建宁县| 康保县| 鄯善县| 丁青县| 扎囊县| 衢州市| 靖宇县| 贡觉县| 北票市| 盐边县| 昔阳县| 轮台县| 连城县| 公安县| 芮城县| 漳平市| 永善县| 临西县| 门头沟区| 东辽县| 衡山县| 南皮县| 兰考县| 绥江县| 齐齐哈尔市|