手勢處理

在ios開發中,需用到對于手指的不同操作,以手指點擊為例:分為單指單擊、單指多擊、多指單擊、多指多擊。對于這些事件進行不同的操作處理,由于使用系統自帶的方法通過判斷touches不太容易處理,而且會有事件之間的沖突。

?

接下來,通過以UITapGestureRecognizer?手勢實現此功能需求?代碼如下

ViewController.m中的viewDidLoad方法:

   1:  //單指單擊
   2:      UITapGestureRecognizer *singleFingerOne = [[UITapGestureRecognizer alloc] initWithTarget:self 
   3:                                      action:@selector(handleSingleFingerEvent:)];
   4:      singleFingerOne.numberOfTouchesRequired = 1; //手指數
   5:      singleFingerOne.numberOfTapsRequired = 1; //tap次數
   6:      singleFingerOne.delegate = self;
   7:      
   8:      //單指雙擊
   9:      UITapGestureRecognizer *singleFingerTwo = [[UITapGestureRecognizer alloc] initWithTarget:self 
  10:                                       action:@selector(handleSingleFingerEvent:)];
  11:      singleFingerTwo.numberOfTouchesRequired = 1;
  12:      singleFingerTwo.numberOfTapsRequired = 2;
  13:      singleFingerTwo.delegate = self;
  14:      
  15:      //雙指單擊
  16:      UITapGestureRecognizer *doubleFingerOne = [[UITapGestureRecognizer alloc] initWithTarget:self 
  17:                                       action:@selector(handleDoubleFingerEvent:)];
  18:      doubleFingerOne.numberOfTouchesRequired = 2;
  19:      doubleFingerOne.numberOfTapsRequired = 1;
  20:      doubleFingerOne.delegate = self;
  21:      
  22:      UITapGestureRecognizer *doubleFingerTwo = [[UITapGestureRecognizer alloc] initWithTarget:self 
  23:  ?? action:@selector(handleDoubleFingerEvent:)];
  24:      doubleFingerTwo.numberOfTouchesRequired = 2;
  25:      doubleFingerTwo.numberOfTapsRequired = 2;
  26:      doubleFingerTwo.delegate = self;
  27:      
  28:      //如果不加下面的話,當單指雙擊時,會先調用單指單擊中的處理,再調用單指雙擊中的處理
  29:      [singleFingerOne requireGestureRecognizerToFail:singleFingerTwo];
  30:      //同理雙指亦是如此
  31:      [doubleFingerOne requireGestureRecognizerToFail:doubleFingerTwo];
  32:      
  33:      [self.view addGestureRecognizer:singleFingerOne];
  34:      [self.view addGestureRecognizer:singleFingerTwo];
  35:      [self.view addGestureRecognizer:doubleFingerOne];
  36:      [self.view addGestureRecognizer:doubleFingerTwo];
  37:      
  38:      [singleFingerOne release];
  39:      [singleFingerTwo release];
  40:      [doubleFingerOne release];
  41:      [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的操作使用類似處理。

轉載于:https://www.cnblogs.com/ThankForYou/archive/2012/08/31/2665829.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/260468.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/260468.shtml
英文地址,請注明出處:http://en.pswp.cn/news/260468.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mybatis select count(*) 一直返回0 mysql_Mybatis教程1:MyBatis快速入門

點擊上方“Java技術前線”,選擇“置頂或者星標”與你一起成長一、Mybatis介紹MyBatis是一個支持普通*SQL*查詢,存儲過程和高級映射的優秀持久層框架。MyBatis消除了幾乎所有的JDBC代碼和參數的手工設置以及對結果集的檢索封裝。MyBatis可以使用簡單的XML…

css預處理器sass使用教程(多圖預警)

css預處理器賦予了css動態語言的特性,如變量、函數、運算、繼承、嵌套等,有助于更好地組織管理樣式文件,以及更高效地開發項目。css預處理器可以更方便的維護和管理css代碼,讓整個網頁變得更加靈活可變。對于預處理器,…

mysql 主從優點_MySql主從配置實踐及其優勢淺談

1、增加兩個MySQL,我將C:\xampp\mysql下的MYSQL復制了一份,放到D:\Mysql2\Mysql5.1修改my.ini(linux下應該是my.cnf):[client]port 3307[mysqld]port 3307basedirD:/Mysql2/Mysql5.1/mysqldatadirD:/Mysql2/Mysql5.1/mysql/data/之后,再增加…

python 多線程并發編程(生產者、消費者模式),邊讀圖像,邊處理圖像,處理完后保存圖像實現提高處理效率

文章目錄需求實現先導入本次需要用到的包一些輔助函數如下函數是得到指定后綴的文件如下的函數一個是讀圖像,一個是把RGB轉成BGR下面是主要的幾個處理函數在上面幾個函數構建對應的處理函數main函數按順序執行結果需求 本次的需求是邊讀圖像,邊處理圖像…

Sharepoint學習筆記—Site Definition系列-- 2、創建Content Type

Sharepoint本身就是一個豐富的大容器,里面存儲的所有信息我們可以稱其為“內容(Content)”,為了便于管理這些Conent,按照人類的正常邏輯就必然想到的是對此進行“分類”。分類所涉及到的層面又必然包括: 1、分類的標準或特征描述{即&#xf…

arduino byte轉string_Java數組轉List集合的三駕馬車

點擊上方 藍字關注我們來源:blog.csdn.net/x541211190/article/details/79597236前言本文中的代碼命名有的可能不太規范,是因為沒法排版的問題,小仙已經很努力去解決了,希望各位能多多點贊、分享。好了,不多bb了(不要讓…

ES6筆記(4)-- Symbol類型

系列文章 -- ES6筆記系列 Symbol是什么?中文意思是標志、記號,顧名思義,它可以用了做記號。 是的,它是一種標記的方法,被ES6引入作為一種新的數據類型,表示獨一無二的值。 由此,JS的數據類型多了…

mysql類型說明_MYSQL 數據類型說明

MySQL支持大量的列類型,它可以被分為3類:數字類型、日期和時間類型以及字符串(字符)類型。本節首先給出可用類型的一個概述,并且總結每個列類型的存儲需求,然后提供每個類中的類型性質的更詳細的描述。概述有意簡化,更…

LeetCode OJ - Convert Sorted List to Binary Search Tree

題目: Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST. 解題思路: 注意是讓構造平衡二叉搜索樹。 每次將鏈表從中間斷開,分成左右兩部分。左邊部分用來構造左子樹&#xff…

手把手教你如下在Linux下如何寫一個C語言代碼,編譯并運行

文章目錄手把手教你如下在Linux下如何寫一個C語言代碼,編譯并運行打開Ubuntu終端創建 helloworld.c編譯C文件手把手教你如下在Linux下如何寫一個C語言代碼,編譯并運行 打開Ubuntu終端 我這里的終端是Windows下的WSL,如果有疑問,…

郵件群發工具的編寫(二)數據的保存

數據的保存與讀取 人類是在不斷探索與改進中進步的 上一篇,郵件群發工具的編寫(一)郵件地址提取,我們講到了郵箱的提取。 那么這一篇,講一下提取完的郵箱信息的保存和讀取。 首先,我希望對上一篇郵箱提取類…

mysql 文件描述符_MySQL沒有發布臨時文件描述符

幾天前,我們遇到了MySQL安裝的一些嚴重問題:MySQL不斷打開臨時文件(正常行為)但這些文件從未發布過.結果是,最終磁盤空間耗盡,我們必須重新啟動服務并手動清理/ tmp.使用lsof,我們看到這樣的事情:mysqld 16866 mysql 5u REG 8,3 0 692 /tmp/ibyWJylQ (de…

c++ lambda函數_C++11 之 lambda函數的詳細使用

1. lambda 函數概述lambda 表達式是一種匿名函數,即沒有函數名的函數;該匿名函數是由數學中的λ演算而來的。通常情況下,lambda函數的語法定義為:[capture] (parameters) mutable ->return-type {statement}其中:[c…

zabbix監控 openstack 的實例的資源使用情況

領導提出的需求:在不給云主機安裝客戶端的情況下,監控云主機的 cpui 內存 網絡 io,并且能出圖。想了幾個方案:1、ceilometer取數據,存入mangodb,用zabbix來讀mangodb數據繪圖2 ceilometer 取數據 &#xff…

pytorch 正向與反向傳播的過程 獲取模型的梯度(gradient),并繪制梯度的直方圖

記錄一下怎樣pytorch框架下怎樣獲得模型的梯度 文章目錄引入所需要的庫一個簡單的函數模型梯度獲取先定義一個model如下定義兩個獲取梯度的函數定義一些過程與調用上述函數的方法可視化一下梯度的histogram引入所需要的庫 import os import torch import torch.nn as nn impor…

2012-9

響應式設計的典范 http://www.bostonglobe.com/ 網站測試頁面 http://www.webpagetest.org/ 編程算法 http://blog.sina.com.cn/s/articlelist_1647038822_1_1.html C Programmers Cookbook http://www.cppblog.com/mzty/category/7609.html Blade 是一個現代構建系統&#xff…

PV操作 (轉載)

PV操作與信號量的處理相關,P表示通過的意思,V表示釋放的意思。信號量是最早出現的用來解決進程同步與互斥問題的機制,包括一個稱為信號量的變量及對它進行的兩個原語操作。 信號量(semaphore)的數據結構為一個值和一個…

ubuntu升級python_Ubuntu 升級python3為更高版本【已實測】

2020-04-13 更新安裝步驟: 1. 先update一下 sudo apt update 2. 安裝依賴庫 sudo apt-get install zlib1g-dev libbz2-dev libssl-dev libncurses5-dev libsqlite3-dev libreadline-dev tk-dev libgdbm-dev libdb-dev libpcap-dev xz-utils libexpat1-dev liblzma-d…

mysql5.0 java連接_Java連接mysql5.0

網上的資料真爛,千篇一律的拷貝的,根本不能用,鄙視! 正題: 到MYSQL網站下載mysql-connector-java-5.0.4.zip文件,解壓; 解壓后有一個文件:mysql-connector-java-5.0.4-bin.jar 把這個…

Framework打包

2019獨角獸企業重金招聘Python工程師標準>>> iOS app需要在許多不同的CPU架構下運行: arm7: 在最老的支持iOS7的設備上使用 arm7s: 在iPhone5和5C上使用 arm64: 運行于iPhone5S的64位 ARM 處理器 上 i386: 32位模擬器上使用 x86_64: 64為模擬器上使用…