欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

ios的手勢操作之UIGestureRecognizer淺析(推薦)

 更新時間:2016年12月12日 16:36:25   作者:more2010wei  
本篇文章主要介紹了ios的手勢操作之UIGestureRecognizer淺析,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。

一、概述

iPhone中處理觸摸屏的操作,在3.2之前是主要使用的是由UIResponder而來的如下4種方式:

 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
 - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
 - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
 - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event

但是這種方式甄別不同的手勢操作實在是麻煩,需要你自己計算做不同的手勢分辨。后來。。。

蘋果就給出了一個比較簡便的方式,就是使用UIGestureRecognizer。

二、UIGestureRecognizer

UIGestureRecognizer基類是一個抽象類,我們主要是使用它的子類(名字包含鏈接,可以點擊跳到iOS Developer library,看官方文檔):

  1. UITapGestureRecognizer
  2. UIPinchGestureRecognizer
  3. UIRotationGestureRecognizer
  4. UISwipeGestureRecognizer
  5. UIPanGestureRecognizer
  6. UILongPressGestureRecognizer

從名字上我們就能知道, Tap(點擊)、Pinch(捏合)、Rotation(旋轉(zhuǎn))、Swipe(滑動,快速移動,是用于監(jiān)測滑動的方向的)、Pan (拖移,慢速移動,是用于監(jiān)測偏移的量的)以及 LongPress(長按)。

舉個例子,可以在viewDidLoad函數(shù)里面添加:

-(void) viewDidLoad 
{ 
 [super viewDidLoad]; 
 // Do any additional setup after loading the view from its nib. 
 UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanFrom:)]; 
 [self.view addGestureRecognizer:panRecognizer];//關(guān)鍵語句,給self.view添加一個手勢監(jiān)測; 
 panRecognizer.maximumNumberOfTouches = 1; 
 panRecognizer.delegate = self; 
 [panRecognizer release]; 
} 

其它手勢方法類似。

其核心就是設(shè)置delegate和在需要手勢監(jiān)測的view上使用addGestureRecognizer添加指定的手勢監(jiān)測。

當然要記得在作為delegate的view的頭文件加上<UIGestureRecognizerDelegate>。

不過有些手勢是關(guān)聯(lián)的,怎么辦呢?例如 Tap 與 LongPress、Swipe與 Pan,或是 Tap 一次與Tap 兩次。

手勢識別是具有互斥的原則的,比如單擊和雙擊,如果它識別出一種手勢,其后的手勢將不被識別。所以對于關(guān)聯(lián)手勢,要做特殊處理以幫助程序甄別,應該把當前手勢歸結(jié)到哪一類手勢里面。

比如,單擊和雙擊并存時,如果不做處理,它就只能發(fā)送出單擊的消息。為了能夠識別出雙擊手勢,就需要做一個特殊處理邏輯,即先判斷手勢是否是雙擊,在雙擊失效的情況下作為單擊手勢處理。使用
[A requireGestureRecognizerToFail:B]函數(shù),它可以指定當A手勢發(fā)生時,即便A已經(jīng)滿足條件了,也不會立刻觸發(fā),會等到指定的手勢B確定失敗之后才觸發(fā)。

- (void)viewDidLoad  
{ 
  // 單擊的 Recognizer 
  UITapGestureRecognizer* singleRecognizer; 
  singleRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:selfaction:@selector(SingleTap:)]; 
  //點擊的次數(shù) 
  singleTapRecognizer.numberOfTapsRequired = 1; // 單擊 
 
  //給self.view添加一個手勢監(jiān)測; 
 
 [self.view addGestureRecognizer:singleRecognizer]; 
 
  
  // 雙擊的 Recognizer 
  UITapGestureRecognizer* doubleRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:selfaction:@selector(DoubleTap:)]; 
  doubleRecognizer.numberOfTapsRequired = 2; // 雙擊 
  //關(guān)鍵語句,給self.view添加一個手勢監(jiān)測; 
  [self.view addGestureRecognizer:doubleRecognizer]; 
   
  // 關(guān)鍵在這一行,雙擊手勢確定監(jiān)測失敗才會觸發(fā)單擊手勢的相應操作 
  [singleRecognizer requireGestureRecognizerToFail:doubleRecognizer]; 
  [singleRecognizer release]; 
  [doubleRecognizer release]; 
} 
 
-(void)SingleTap:(UITapGestureRecognizer*)recognizer 
{ 
//處理單擊操作 
} 
 
-(void)DoubleTap:(UITapGestureRecognizer*)recognizer 
{ 
//處理雙擊操作 
} 

三、iphone操作手勢的大概種類

1.點擊(Tap)

點擊作為最常用手勢,用于按下或選擇一個控件或條目(類似于普通的鼠標點擊)、

2.拖動(Drag)

拖動用于實現(xiàn)一些頁面的滾動,以及對控件的移動功能。

3.滑動(Flick)

滑動用于實現(xiàn)頁面的快速滾動和翻頁的功能。

4.橫掃(Swipe)

橫掃手勢用于激活列表項的快捷操作菜單

5.雙擊(Double Tap)

雙擊放大并居中顯示圖片,或恢復原大?。ㄈ绻斍耙呀?jīng)放大)。同時,雙擊能夠激活針對文字編輯菜單。

6.放大(Pinch open)

放大手勢可以實現(xiàn)以下功能:打開訂閱源,打開文章的詳情。在照片查看的時候,放大手勢也可實現(xiàn)放大圖片的功能。

7.縮小(Pinch close)

縮小手勢,可以實現(xiàn)與放大手勢相反且對應的功能的功能:關(guān)閉訂閱源退出到首頁,關(guān)閉文章退出至索引頁。在照片查看的時候,縮小手勢也可實現(xiàn)縮小圖片的功能。

8.長按(Touch &Hold)

在我的訂閱頁,長按訂閱源將自動進入編輯模式,同時選中手指當前按下的訂閱源。這時可直接拖動訂閱源移動位置。

針對文字長按,將出現(xiàn)放大鏡輔助功能。松開后,則出現(xiàn)編輯菜單。

針對圖片長按,將出現(xiàn)編輯菜單。

9.搖晃(Shake)

搖晃手勢,將出現(xiàn)撤銷與重做菜單。主要是針對用戶文本輸入的。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Objective-C關(guān)鍵字@property使用原理探究

    Objective-C關(guān)鍵字@property使用原理探究

    這篇文章主要為大家介紹了Objective-C關(guān)鍵字@property使用原理探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • iOS實現(xiàn)消息推送及原理分析

    iOS實現(xiàn)消息推送及原理分析

    這篇文章主要為大家詳細介紹了iOS實現(xiàn)消息推送,及針對消息推送原理進行分析,感興趣的小伙伴們可以參考一下
    2016-08-08
  • IOS 開發(fā)之UITextField的光標操作擴展

    IOS 開發(fā)之UITextField的光標操作擴展

    這篇文章主要介紹了IOS 開發(fā)之UITextField的光標操作擴展的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • iOS 四種回調(diào)方法總結(jié)

    iOS 四種回調(diào)方法總結(jié)

    這篇文章主要介紹了iOS 四種回調(diào)方法總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • iOS開發(fā)之APP相關(guān)

    iOS開發(fā)之APP相關(guān)

    本文給大家介紹的是IOS開發(fā)系列文章的第一篇,給大家分享一些APP相關(guān)的知識點,非常的實用,有需要的小伙伴可以參考下
    2016-04-04
  • IOS 圖文混排(CoreText.framework)詳解及實例

    IOS 圖文混排(CoreText.framework)詳解及實例

    這篇文章主要介紹了IOS 圖文混排(CoreText.framework)詳解及實例的相關(guān)資料,這里對IOS 的圖文混排進行了詳細介紹,并附代碼實例,和實現(xiàn)效果圖,需要的朋友可以參考下
    2016-11-11
  • ios動態(tài)設(shè)置lbl文字標簽的高度

    ios動態(tài)設(shè)置lbl文字標簽的高度

    本文給大家分享的是ios動態(tài)設(shè)置lbl文字標簽的高度寬度的方法,一共給大家匯總了3種方法,小伙伴們根據(jù)自己的項目需求自由選擇。
    2015-05-05
  • 10個非常實用的iOS小技巧

    10個非常實用的iOS小技巧

    這篇文章主要為大家詳細介紹了10個非常實用的iOS小技巧,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • iOS?block的值捕獲與指針捕獲詳解

    iOS?block的值捕獲與指針捕獲詳解

    Block它是C語言級別和運行時方面的一個特征,下面這篇文章主要給大家介紹了關(guān)于iOS?block的值捕獲與指針捕獲的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-02-02
  • ios多種語言的本地化思路

    ios多種語言的本地化思路

    ios程序?qū)崿F(xiàn)多種語言的本地化辦法,最近要對一款游戲進行多語言本地化,在網(wǎng)上找了一些方案,加上自己的一點點想法整理出一套方案和大家分享!
    2015-05-05

最新評論