IOS中的七種手勢(shì)小結(jié)
今天為大家介紹一下IOS 的七種手勢(shì),手勢(shì)在開(kāi)發(fā)中經(jīng)常用到,所以就簡(jiǎn)單 通俗易懂的說(shuō)下, 話不多說(shuō),直接看代碼:
// 初始化一個(gè)UIimageView UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 300, 300)]; imageView.image = [UIImage imageNamed:@"12.jpg"]; // UIImageView的用戶交互是默認(rèn)關(guān)閉的,要想使他可以處理觸摸事件,我們得手動(dòng)打開(kāi)它 [imageView setUserInteractionEnabled:YES]; [self.window addSubview:imageView]; //初始化一個(gè)視圖(響應(yīng)者)來(lái)承載手勢(shì) /*UIView *gestureView = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)]; //當(dāng)前視圖放置到屏幕中央 gestureView.center = self.window.center; gestureView.backgroundColor = [UIColor yellowColor]; [self.window addSubview:gestureView];
1、輕拍手勢(shì)
//創(chuàng)建輕拍手勢(shì) UITapGestureRecognizer *tapGR = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction:)];
1.設(shè)置觸控對(duì)象,和輕拍的次數(shù)
//設(shè)置觸控對(duì)象的個(gè)數(shù)(幾個(gè)手指) [tapGR setNumberOfTouchesRequired:1]; //設(shè)置輕拍次數(shù) [tapGR setNumberOfTapsRequired:2]; //給創(chuàng)建好的視圖添加手勢(shì) [gestureView addGestureRecognizer:tapGR]; //輕拍手勢(shì)的回調(diào)方法 - (void)tapAction:(UITapGestureRecognizer*)sender{ //可以根據(jù)手勢(shì)得到它當(dāng)前所作用的視圖 UIImageView *imageView = (UIImageView*)sender.view; //得到textfield viewWithTag此方法的返回值為UIView類(lèi)型,但是UITextField為UIView的子類(lèi),父類(lèi)對(duì)象不能直接指向子類(lèi)對(duì)象,所以需要強(qiáng)制轉(zhuǎn)換 UITextField *textField = (UITextField*)[self.window viewWithTag:1000]; //回收鍵盤(pán),取消第一響應(yīng)者 [textField resignFirstResponder]; NSLog(@"我輕拍了gestureView"); }
2、捏合手勢(shì)
//創(chuàng)建捏合手勢(shì) UIPinchGestureRecognizer* pinchGR = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchAction:)]; pinchGR.delegate = self; // 可以在同一個(gè)視圖上實(shí)現(xiàn)多個(gè)手勢(shì) //捏合手勢(shì)的回調(diào)方法 - (void)pinchAction:(UIPinchGestureRecognizer*)sender{ //通過(guò)捏合手勢(shì)的到縮放比率 float scale = sender.scale; //得到該手勢(shì)所作用的視圖 UIView *view = sender.view; //2D仿射變換函數(shù)中的縮放函數(shù)來(lái)實(shí)現(xiàn)視圖的放大縮小 //是在原有基礎(chǔ)上來(lái)改變當(dāng)前的視圖 //函數(shù)的第一個(gè)參數(shù):現(xiàn)有的視圖的transform值 //第二個(gè)參數(shù):x軸上的縮放比率 //第三個(gè)參數(shù):y軸上的縮放比率 //是在視圖最初的transform狀態(tài)上改變,不管執(zhí)行多少次,都是以該視圖最初的transform狀態(tài)為基礎(chǔ)來(lái)改變 view.transform = CGAffineTransformMakeScale(2, 2); view.transform = CGAffineTransformScale(view.transform, scale, scale); //每次捏合動(dòng)作完畢之后,讓此捏合值復(fù)原,使得它每次都是從100%開(kāi)始縮放 sender.scale = 1; }
3、旋轉(zhuǎn)手勢(shì)
//旋轉(zhuǎn)手勢(shì) UIRotationGestureRecognizer* rotaGR = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotaAction:)]; rotaGR.delegate = self; //旋轉(zhuǎn)手勢(shì)回調(diào)方法 - (void)rotaAction:(UIRotationGestureRecognizer*)sender{ //通過(guò)手勢(shì)的到旋轉(zhuǎn)角度 float rota = sender.rotation; //得到該手勢(shì)作用的視圖 UIView *view = sender.view; //通過(guò)2D仿射變換函數(shù)中的旋轉(zhuǎn)函數(shù)來(lái)使得當(dāng)前視圖旋轉(zhuǎn)。 view.transform = CGAffineTransformRotate(view.transform, rota); //復(fù)原 sender.rotation = 0; }
4、平移手勢(shì)
//平移手勢(shì) UIPanGestureRecognizer *panGP = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panAction:)]; //平移手勢(shì)的回調(diào)方法 - (void)panAction:(UIPanGestureRecognizer*)sender{ //得到當(dāng)前手勢(shì)所在視圖 UIView *view = sender.view; //得到我們?cè)谝晥D上移動(dòng)的偏移量 CGPoint currentPoint = [sender translationInView:view.superview]; //通過(guò)2D仿射變換函數(shù)中與位移有關(guān)的函數(shù)實(shí)現(xiàn)視圖位置變化 view.transform = CGAffineTransformTranslate(view.transform, currentPoint.x, currentPoint.y); //復(fù)原 // 每次都是從00點(diǎn)開(kāi)始 [sender setTranslation:CGPointZero inView:view.superview]; }
5、邊緣輕掃手勢(shì)
//邊緣輕掃手勢(shì) UIScreenEdgePanGestureRecognizer *edgePanGR = [[UIScreenEdgePanGestureRecognizer alloc] initWithTarget:self action:@selector(edgePanAction:)]; edgePanGR.edges = UIRectEdgeAll; //邊緣輕掃手勢(shì)回調(diào)方法 - (void)edgePanAction:(UIScreenEdgePanGestureRecognizer*)sender{ NSLog(@"我成功的觸發(fā)了屏幕邊緣手勢(shì)"); }
6、長(zhǎng)按手勢(shì)
// ⑥長(zhǎng)按手勢(shì) UILongPressGestureRecognizer *longPressPR = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(longPressAction:)]; longPressPR.minimumPressDuration = 1; // ⑥長(zhǎng)按手勢(shì)的回調(diào)方法 - (void)longPressAction:(UILongPressGestureRecognizer *)sender{ if (sender.state == UIGestureRecognizerStateEnded) { UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"看你麻痹" message:@"不服你咬死我" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"確定", nil]; [alertView show]; } }
7、輕掃手勢(shì)
// ⑦輕掃手勢(shì) UISwipeGestureRecognizer *swipeGR = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeAction:)]; // ⑦輕掃手勢(shì)的回調(diào)方法 - (void)swipeAction:(UISwipeGestureRecognizer *)sender{ if (sender.state == UIGestureRecognizerStateEnded) { UIActionSheet *actionSheet = [[UIActionSheet alloc]initWithTitle:@"槽尼瑪" delegate:self cancelButtonTitle:@"紙張" destructiveButtonTitle:@"哈哈哈" otherButtonTitles:@"切毛毛", nil]; [actionSheet showInView:self.window]; } }
給imageView視圖添加手勢(shì)
// 3.給圖片添加手勢(shì) 一個(gè)視圖可以添加多種手勢(shì),但是一個(gè)手勢(shì),只能添加到一個(gè)視圖上 [imageView addGestureRecognizer:tapGR]; [imageView addGestureRecognizer:pinchGR]; [imageView addGestureRecognizer:rotaGR]; [imageView addGestureRecognizer:panGR]; [imageView addGestureRecognizer:edgePanGR]; [imageView addGestureRecognizer:longPressPR]; [imageView addGestureRecognizer:swipeGR];
當(dāng)一個(gè)視圖上想要添加多種手勢(shì)的時(shí)候就要用到手勢(shì)的代理(重點(diǎn))
pragma mark ----手勢(shì)的代理方法 // 使得多個(gè)手勢(shì)可以同時(shí)響應(yīng) - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{ // 返回值為YES的時(shí)候,當(dāng)執(zhí)行一個(gè)手勢(shì)的操作的時(shí)候,也可以執(zhí)行其他手勢(shì)的操作 return YES; }
以上所述是小編給大家介紹的IOS中的七種手勢(shì)小結(jié),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
IOS開(kāi)發(fā)代碼分享之用nstimer實(shí)現(xiàn)倒計(jì)時(shí)功能
在制作IOS項(xiàng)目中,我們經(jīng)常要用到倒計(jì)時(shí)功能,今天就分享下使用nstimer實(shí)現(xiàn)的倒計(jì)時(shí)功能的代碼,希望對(duì)大家能有所幫助2014-09-09iOS Touch ID指紋識(shí)別技術(shù)簡(jiǎn)介
這篇文章主要為大家詳細(xì)介紹了iOS Touch ID指紋識(shí)別技術(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04IOS 開(kāi)發(fā)中發(fā)送e-mail的幾種方法總結(jié)
這篇文章主要介紹了IOS 開(kāi)發(fā)中發(fā)送e-mail的幾種方法總結(jié)的相關(guān)資料,需要的朋友可以參考下2017-03-03ios基礎(chǔ)教程之常見(jiàn)的數(shù)組使用方法
這篇文章主要給大家介紹了關(guān)于ios基礎(chǔ)教程之常見(jiàn)的數(shù)組使用方法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-01-01MacOS系統(tǒng)下Unity啟動(dòng)黑屏的解決方法
最近發(fā)現(xiàn)了一個(gè)問(wèn)題,unity一打開(kāi)就黑屏,通過(guò)查找相關(guān)的資料終于解決了,所以下面這篇文章主要給大家介紹了關(guān)于在MacOS系統(tǒng)下Unity啟動(dòng)黑屏的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。2018-01-01iOS界面跳轉(zhuǎn)時(shí)導(dǎo)航欄和tabBar的隱藏與顯示功能
這篇文章主要介紹了iOS界面跳轉(zhuǎn)時(shí)導(dǎo)航欄和tabBar的隱藏與顯示功能,需要的朋友可以參考下2017-02-02