UITapGestureRecognizer 的用法(輕觸手勢識別器)

来源:https://www.cnblogs.com/jiuyi/archive/2019/02/01/10345170.html
-Advertisement-
Play Games

最近在項目中用到了手勢操作,鍵盤迴收時還是挺常用的,現在總結下,多謝網路上大神們的分享。 先分享下我在項目中用的代碼: 將相應代碼複製到你的工程中即可使用,由於代碼中已經有詳細的解釋說明,這裡就不在重覆解釋了。 代碼中只是列舉了單指與雙指對於單擊或多擊的處理,同理多指的操作需修改numberOfTo ...


最近在項目中用到了手勢操作,鍵盤迴收時還是挺常用的,現在總結下,多謝網路上大神們的分享。

先分享下我在項目中用的代碼:

UITapGestureRecognizer * mytap=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tap_gestureRecognizer:)];
[self addGestureRecognizer:mytap];
[mytap release];

//收回鍵盤
-(void)tap_gestureRecognizer:(UITapGestureRecognizer *)tap_gest
{
    [self.scv_stockPriceTextField resignFirstResponder];
    [self.scv_stockAmoutTextField resignFirstResponder];
}




//單指單擊
 UITapGestureRecognizer *singleFingerOne = [[UITapGestureRecognizer alloc] initWithTarget:self
 action:@selector(handleSingleFingerEvent:)];
 singleFingerOne.numberOfTouchesRequired = 1; //手指數
 singleFingerOne.numberOfTapsRequired = 1; //tap次數
 singleFingerOne.delegate = self;
 //單指雙擊
 UITapGestureRecognizer *singleFingerTwo = [[UITapGestureRecognizer alloc] initWithTarget:self
 action:@selector(handleSingleFingerEvent:)];
 singleFingerTwo.numberOfTouchesRequired = 1;
 singleFingerTwo.numberOfTapsRequired = 2;
 singleFingerTwo.delegate = self;
 //雙指單擊
 UITapGestureRecognizer *doubleFingerOne = [[UITapGestureRecognizer alloc] initWithTarget:self
 action:@selector(handleDoubleFingerEvent:)];
 doubleFingerOne.numberOfTouchesRequired = 2;
 doubleFingerOne.numberOfTapsRequired = 1;
 doubleFingerOne.delegate = self;
 UITapGestureRecognizer *doubleFingerTwo = [[UITapGestureRecognizer alloc] initWithTarget:self
    action:@selector(handleDoubleFingerEvent:)];
 doubleFingerTwo.numberOfTouchesRequired = 2;
 doubleFingerTwo.numberOfTapsRequired = 2;
 doubleFingerTwo.delegate = self;
 //如果不加下麵的話,當單指雙擊時,會先調用單指單擊中的處理,再調用單指雙擊中的處理
 [singleFingerOne requireGestureRecognizerToFail:singleFingerTwo];
 //同理雙指亦是如此
 [doubleFingerOne requireGestureRecognizerToFail:doubleFingerTwo];
 [self.view addGestureRecognizer:singleFingerOne];
 [self.view addGestureRecognizer:singleFingerTwo];
 [self.view addGestureRecognizer:doubleFingerOne];
 [self.view addGestureRecognizer:doubleFingerTwo];
 [singleFingerOne release];
 [singleFingerTwo release];
 [doubleFingerOne release];
 [doubleFingerTwo release];

處理事件的方法,代碼:
1: //處理單指事件 2: - (void)handleSingleFingerEvent:(UITapGestureRecognizer *)sender 3: { 4: if (sender.numberOfTapsRequired == 1) { 5: //單指單擊 6: NSLog(@"單指單擊"); 7: }else if(sender.numberOfTapsRequired == 2){ 8: //單指雙擊 9: NSLog(@"單指雙擊"); 10: } 11: } 12: //處理雙指事件 13: - (void)handleDoubleFingerEvent:(UITapGestureRecognizer *)sender 14: { 15: if (sender.numberOfTapsRequired == 1) { 16: //雙指單擊 17: NSLog(@"雙指單擊"); 18: }else if(sender.numberOfTapsRequired == 2){ 19: //雙指雙擊 20: NSLog(@"雙指雙擊"); 21: } 22: }

 

將相應代碼複製到你的工程中即可使用,由於代碼中已經有詳細的解釋說明,這裡就不在重覆解釋了。

代碼中只是列舉了單指與雙指對於單擊或多擊的處理,同理多指的操作需修改numberOfTouchesRequired屬性,對點擊的次數需修改numberOfTapsRequired屬性。

對於其他手勢例如UISwipeGestureRecognizerUILongPressGestureRecognizer,UILongPressGestureRecognizer 的操作使用類似處理。

 

UIKit中包含了UIGestureRecognizer類,用於檢測發生在設備中的手勢。UIGestureRecognizer是一個抽象類,定義了所有手勢的基本行為,它有下麵一些子類用於處理具體的手勢: 

    1、拍擊UITapGestureRecognizer (任意次數的拍擊)  
    2、向里或向外捏UIPinchGestureRecognizer (用於縮放)  
    3、搖動或者拖拽UIPanGestureRecognizer  
    4、擦碰UISwipeGestureRecognizer (以任意方向)  
    5、旋轉UIRotationGestureRecognizer (手指朝相反方向移動)  
    6、長按UILongPressGestureRecognizer 

對於不同類型的手勢識別器,具有不同的配置屬性。比如UITapGestureRecognizer,可以配置拍擊次數。界面接收到手勢之後,可以發送一 個消息,用於處理響應手勢動作後的任務。當然,不同的手勢識別器,發送的消息方法也會有所不同。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • “查詢存在" 01 "課程但可能不存在" 02 "課程的情況(不存在時顯示為 null )” ——翻譯為:課程表裡面,存在01的信息,未必滿足有02的課程情況 ——覺得題意不是很明確,但是就當成練習left join 和right join的理解 1、存在01課程情況 SELECT * from s ...
  • 什麼是Intent Intent可以理解為信使(意圖) 由Intent來協作完成Android各個組件之間的通訊, 也可以說是實現頁面與頁面之間的跳轉 Intent實現頁面之間的跳轉 startActivityForResult(intent, requestCode); //第二種啟動方式 onA ...
  • 微信小程式 人臉識別登陸的實現 關鍵詞:微信小程式 人臉識別 百度雲介面 前言 這是一篇關於一個原創微信小程式開發過程的原創文章。涉及到的核心技術是微信小程式開發方法和百度雲人臉識別介面。小程式的主體是一個用於個人密碼存儲的密碼管理器,在登陸註冊階段,需要調用百度雲人臉識別介面以及百度雲線上人臉庫的 ...
  • 跨功能需求(Cross-Functional Requirements, CFR)通常被稱為非功能需求(Non-Functional Requirements, NFR), 也可以叫做系統質量屬性(System Quality Attributes/Traits), 是指那些用來評價系統運行狀態的需... ...
  • 在上一篇 學習安卓開發[4] 使用隱式Intent啟動簡訊、聯繫人、相機應用 中瞭解了在調用其它應用的功能時隱式Intent的使用,本次基於一個圖片瀏覽APP的開發,記錄使用AsyncTask在後臺執行HTTP任務以獲取圖片URL,然後使用HandlerThread動態下載和顯示圖片 HTTP 請求 ...
  • 本文以一個簡單的小例子,簡述Android開發中GridView的常見應用,僅供學習分享使用。 ...
  • 參考文章: "約束佈局ConstraintLayout看這一篇就夠了" "ConstraintLayout 屬性篇" 介紹 Android 是谷歌推出替代 的組件。 支持相對佈局、線性佈局、幀佈局,看來更像是 、 t、`RelativeLayout·三者的結合體,並且比這三者更強大的是實現了百分比布 ...
  • 一、UIScrollView是什麼? 1、UIScrollView是滾動的view,UIView本身不能滾動,子類UIScrollview拓展了滾動方面的功能。 2、UIScrollView是所有滾動視圖的基類。以後的UITableView,UITextView等視圖都是繼承於該類。 使用場景:顯示 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...