你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> XCode4.2-使用復雜的觸摸和手勢UIXXGestureRecognizer

XCode4.2-使用復雜的觸摸和手勢UIXXGestureRecognizer

編輯:IOS開發綜合
使用復雜的觸摸和手勢 Apple有各種手勢識別器的Class,下面,將使用幾個手勢識別器,實現:輕按、輕掃、張合、旋轉(搖動暫不涉及)。每個手勢都將有一個彈出式窗口的反饋。   在ViewController.m文件中, 1-點擊事件 -(void)foundTap:(UITapGestureRecognizer *)recognizer{   UIAlertView* alert=[[UIAlertView alloc] initWithTitle:@"Hello" message:@"tapped" delegate:nil cancelButtonTitle:@"OK"otherButtonTitles:nil];     [alert show]; }   - (void)viewDidLoad {     [super viewDidLoad];       UITapGestureRecognizer *tapRecognizer;  //創建一個輕按手勢識別器 tapRecognizer=[[UITapGestureRecognizer alloc]initWithTarget:self                                                           action:@selector(foundTap:)];                                     //初始化識別器,並使用函數指針(方法指針)觸發同時實現方法     tapRecognizer.numberOfTapsRequired=1;  //輕按對象次數(1)觸發此行為     tapRecognizer.numberOfTouchesRequired=1; //要求響應的手指數     [self.view addGestureRecognizer:tapRecognizer];  //相應的對象添加控制器 }   仔細觀察實現的方法,均是按著以下步驟:新建一個控制器實例--實例初始化--將其添加到類對象--實現函數指針中的方法(@selector()). 【若想獲得輕按或輕掃手勢坐標,可添加: CGPoint location=[recognizer locationInView:<the view>  <the view>即為手勢識別器的視圖名;location有兩個參數x和y】   2-輕掃: 接下來,我們按著上述步驟實現輕掃: 函數指針指向的方法: -(void)foundSwipe:(UISwipeGestureRecognizer *)recognizer{      UIAlertView* alert=[[UIAlertView alloc] initWithTitle:@"Hello" message:@"swiped" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];     [alert show]; }   還是viewDidLoad: UISwipeGestureRecognizer *swipeRecognizer;  //創建一個輕掃識別器     swipeRecognizer=[[UISwipeGestureRecognizer alloc]initWithTarget:self                                                               action:@selector(foundSwipe:)];                            //對象初始化 並有函數指針     swipeRecognizer.direction=     UISwipeGestureRecognizerDirectionRight|UISwipeGestureRecognizerDirectionLeft;                                                       //手勢相應 向左或向右滑動     swipeRecognizer.numberOfTouchesRequired=1;   //掃動對象次數     [self.view addGestureRecognizer:swipeRecognizer];  //向對象添加控制器   相應掃動方向時,有四個方向可供選擇: UISwipeGestureRecognizerDirectionRight/Left/Up/Down;     3-張合: 將實現放大縮小 函數指針方法: -(void)foundPinch:(UIPinchGestureRecognizer *)recognizer{ //注意此處的類     NSString *message;     double scale;     scale=recognizer.scale;   //識別器的scale(刻度尺、尺度) //可用scale結合openGLES的glScalef實現縮放     message=[[NSString alloc]initWithFormat:@"縮放:Scale:%1.2f,Velocity:%1.2f",recognizer.scale,recognizer.velocity];     UIAlertView* alert=[[UIAlertView alloc] initWithTitle:@"Hello" message:message delegate:nil cancelButtonTitle:@"OK"               otherButtonTitles:nil];     [alert show]; }   ViewDidLoad中: UIPinchGestureRecognizer *pinchReconizer;   //新建一個張合識別器對象     pinchReconizer=[[UIPinchGestureRecognizer alloc]initWithTarget:self                                                              action:@selector(foundPinch)];                                        //初始化對象     [self.view addGestureRecognizer:pinchReconizer];  //添加控制器     4-旋轉 首先Cocoa類使用弧度為單位,角度和弧度的轉換關系:           角度=弧度*180/Pi 函數指針指向的方法: -(void)foundRotation:(UIRotationGestureRecognizer *)recognizer{     NSString *message;     double rotation;     rotation=recognizer.rotation;  //返回一個控制器角度 //在openGLES中可使用rotation結合glRoatef實現旋轉     message=[[NSString alloc] initWithFormat:@"旋轉,Radians:%1.2f,Velocity:%1.2f",               recognizer.rotation,recognizer.velocity];     UIAlertView* alert=[[UIAlertView alloc] initWithTitle:@"Hello" message:message delegate:nil cancelButtonTitle:@"OK"               otherButtonTitles:nil];     [alert show]; }   viewDidLoad如下: UIRotationGestureRecognizer *rotationRecognizer;    //新建旋轉手勢控制器對象     rotationRecognizer=[[UIRotationGestureRecognizer alloc]initWithTarget:self                                                      action:@selector(foundRotation:)];                                                     //初始化對象     [self.view addGestureRecognizer:rotationRecognizer]; //添加控制器
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved