iOS 自定義手勢
下面是實踐過後總結的具體步驟,例子程式碼實現了一個一橫一豎畫一個十字的手勢:
首先建立UIGestureRecognizer的子類。
#import <UIKit/UIKit.h>
@interface CustomTouch2: UIGestureRecognizer
@end
在.m檔案import UIGestureRecognizerSubclass.h
#import <UIKit/UIGestureRecognizerSubclass.h>
在.m中實現
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event;
其中,
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
中可能需要實現記錄手勢的起始位置的操作
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
中可能要實現一些檢查,當手勢動作達到設定位置時觸發手勢回撥方法,在這裡需要設定state為UIGestureRecognizerStateEnded
if (self.state == UIGestureRecognizerStatePossible) {
[self setState:UIGestureRecognizerStateEnded];
}
另外,viewController中要對對應的View新增 addGestureRecognizer
- (void)viewDidLoad {
[superviewDidLoad];
CustomTouch2
[self.viewaddGestureRecognizer:customTouch];
}
- (void) handleTouch:(UIRotationGestureRecognizer*) recognizer
{
NSLog(@"你觸發的手勢");
}
下面是我實現的一個十字手勢的程式碼:
#import "CustomTouch2.h"
#import <UIKit/UIGestureRecognizerSubclass.h>
@interface CustomTouch2()
{
CGPoint curTickleStart;
BOOL arriveFirstPoint;
BOOL arriveLastPoint;
}
@end
static int touchTimes = 0;
@implementation CustomTouch2
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch * touch = [touches anyObject];
curTickleStart = [touch locationInView:self.view];
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch * touch = [touches anyObject];
CGPoint ticklePoint = [touch locationInView:self.view];
CGFloat horizontal = ticklePoint.x - curTickleStart.x;
CGFloat vertical = ticklePoint.y - curTickleStart.y;
if (!arriveFirstPoint && vertical >= 50 && (horizontal <= 10 || horizontal >= -10)) {
arriveFirstPoint = YES;
touchTimes ++;
}
if (arriveFirstPoint && (vertical <= 10 || vertical >= -10) && horizontal >= 50){
arriveLastPoint = YES;
touchTimes ++;
}
if (touchTimes == 2 && self.state == UIGestureRecognizerStatePossible ) {
[self setState:UIGestureRecognizerStateEnded];
touchTimes = 0;
arriveFirstPoint = NO;
}
}
- (void)reset {
curTickleStart = CGPointZero;
if (self.state == UIGestureRecognizerStatePossible) {
[self setState:UIGestureRecognizerStateFailed];
}
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
[self reset];
}
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
{
[self reset];
}
@end
相關推薦
iOS 自定義手勢
下面是實踐過後總結的具體步驟,例子程式碼實現了一個一橫一豎畫一個十字的手勢: 首先建立UIGestureRecognizer的子類。 #import <UIKit/UIKit.h> @interface CustomTouch2: UIGestureR
iOS手勢識別的詳細使用(拖動,縮放,旋轉,點選,手勢依賴,自定義手勢)
1、UIGestureRecognizer介紹手勢識別在iOS上非常重要,手勢操作移動裝置的重要特徵,極大的增加了移動裝置使用便捷性。iOS系統在3.2以後,為方便開發這使用一些常用的手勢,提供了UIGestureRecognizer類。手勢識別UIGestureRecogn
iOS 自定義返回鍵後手勢返回失效
在現在的APP開發中,產品和UI一般都會拋棄iOS系統的返回鍵,使用自己定義的圖片。但是自定義返回按鈕之後,iOS系統自帶的手勢返回事件就失效了,需要我們手動設定一下代理:1.如果自定製了 UINavigationController在這個類中,遵循 <UIGestur
ios自定義返回按鈕後沒有滑動返回手勢處理方法
A push B push C在C中不需要加以下程式碼 在A檢視中增加下面程式碼 -(void)viewDidAppear:(BOOL)animated{ [super viewDidApp
iOS開發之自定義手勢
iOS為手指觸碰事件提供了手勢處理器,通過手勢處理器可使用一致的變成模式來處理各種觸碰事件,而且變成更加簡單,因此一般推薦使用者使用手勢來處理使用者的觸碰事件。無論處理哪種手勢,都可面向UIGestureRecognizer程式設計,UIGestureRecognizer提
ios 自定義返回按鈕時,如何新增手勢返回
在父檢視上加上如下程式碼: self.navigationItem.hidesBackButton = YES; self.navigationController.interactivePopGestureRecognizer.delegate = self; sel
iOS 自定義導航欄pop返回手勢,全屏右滑返回
- (void)viewDidLoad { [superviewDidLoad]; //重新給interactivePopGestureRecognizer.delegate掛代理
iOS自定義轉場動畫(4)——自定義模態跳轉之dismiss與手勢驅動
Dismiss 效果: 1、新建PresentTransition繼承NSObject,並在.h中遵守UIViewControllerAnimatedTransitioning協議。 2、實現協議的兩個方法,並在其中編寫 Push 的動畫。類似Pr
iOS 手勢重疊 iOS系統手勢與自定義手勢重疊, 手勢衝突
.m檔案 UIPanGestureRecognizer *swipe = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(clickSwipe:)]; swipe.delegate = self; [
ios 自定義鍵盤的return鍵以及鍵盤的其他一些屬性
variable 位置 arch ext ddr gin character 觸發 hone //初始化textfield並設置位置及大小 UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20
IOS 自定義按鈕(代碼實現)+九宮格
uifont 排列 end uiview height iyu void rec name 在一些下載應用裏整個頁面都是按鈕,有好多好多,但是仔細觀察不難發現他們很有規律。就像下面一樣?? 很有規律的排列在屏幕上,那麽這需要我們怎麽去做能。 正如標題,我們需要了解兩個知
iOS自定義一些提示控件
mat cat get -1 from start mask ins sel 代碼如下: .h中的代碼: // // HKUIToolsView.h // HKUIToolsDemo // // Created by isHakan on 2017/7/28
iOS - 自定義 iPhone 鈴聲
mar 資料庫 phone 右鍵 還需要 到手 文件名 頁面 fin 1、iPhone 鈴聲格式 iPhone 的來電鈴聲時長限制為 40 秒,短信鈴聲時長限制為 25 秒,且 iOS5 及以上的系統才支持 m4r 格式的短信鈴聲。 2、自定義 iPhone 鈴聲 1
iOS自定義控制元件-UISearchBar
在開發過程中,UISearchBar屬不多見的控制元件,在我們一般使用的是系統原生樣式: 但是UI設計師可能想要的是這種: 可能你覺得很簡單:覺得設定背景顏色,邊框圖示什麼的;
iOS自定義協議中的byte使用
自定義的簡單協議一般包括訊息頭部,訊息碼,訊息體,校驗碼和尾部,一個專案裡面用到的頭部和尾部一般都是固定的,訊息碼用來標識是哪一條訊息,校驗碼用來校驗資料完整性 在一些需要相容多端的開發的時候,可能會遇到使用自定義協議,比如與硬體通訊或者使用socket的時候,接受的資料是按約定
ios自定義日期、時間、城市選擇器
選擇器,我想大家都不陌生,當需要使用者去選擇某些範圍值內的一個固定值時,我們會採用選擇器的方式。選擇器可以直觀的提示使用者選擇的值範圍、統一資訊的填寫格式,同時也方便使用者快速的進行選擇,比如對於性別,正常情況下就只有男女兩種情況,那這時候用一個選擇器給使用者進行選擇的話,可以避免錯誤資料的輸入,也更方便使用
iOS自定義tabbar(沒有tabbar上的黑線)
自定義tabbar相信在很多專案中都要用到。有的時候 還需要那種 不規則的tabbar,例如中間高兩邊底,例如需要新增tabbar的背景圖片等等。這裡 我要介紹一種 自定義tabbar的方法 ,這種方法可以呼叫系統的 hidesBottomBarWhenPushed 方法,很方便的隱藏tab
iOS自定義log並寫入檔案
前言 iOS開發中,很多情況需要使用到log列印,本文主要講解如何將列印寫入檔案,並且不影響控制檯的正常列印。 常見方法 NSString *documentDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSU
IOS 自定義軟鍵盤功能,修改換行鍵為傳送鍵
IOS專案是使用混合模式開發,在開發聊天功能時;發現軟鍵盤不能像QQ、微信那樣,換行鍵不能變為傳送;網上說是因為輸入框類別導致;嘗試過以後,還是不行;然後想到用IOS native解決; 先說一下,原生APP 設定軟鍵盤換行鍵為傳送鍵: textField.returnKeyType = U
iOS自定義任意解析度的Camera(包含example code)
說在前面 如果不想看文章,可以直接翻到最後,我已經把程式碼上傳到gist上,但這樣你會失去一個理解程式碼的機會。 概述 該文章會涉及到的概念包括: AVCaptureDeviceInput,AVCaptureVideoDataOutput,AVCaptureV