iOS開發中常用的手勢---邊緣手勢


 

說明:以下方法是開發中使用的方法,有什么不對的或者好的方法,請多多指教!

 

此處的邊緣手勢是用來控制左側抽屜視圖的彈出以及收回。

添加手勢 :

  1. 頁面上有多個手勢時需要遵循 UIGestureRecognizerDelegate 協議
 1 @interface HomePageViewController ()<LeftDrawerViewDelegate,UITableViewDataSource,UITableViewDelegate,SDCycleScrollViewDelegate,UIGestureRecognizerDelegate>{
 2     
 3     LeftDrawerViewViewController *_leftDrawerVC;
 4     
 5     UITableView *_tableView;
 6     
 7     UIView *_headeView;
 8     
 9     //輪播圖詳情展示URL數組
10     NSMutableArray *_urlArr;
11     
12     BOOL _leftDrawerState;
13     
14     UIView *_maskView;
15     
16     
17 }

2.添加邊緣手勢

 1  //添加邊緣手勢
 2     UIScreenEdgePanGestureRecognizer *screenEdgeGesOut = [[UIScreenEdgePanGestureRecognizer alloc]initWithTarget:self action:@selector(screenGesOut:)];
 3     screenEdgeGesOut.edges = UIRectEdgeLeft;
 4     
 5     [self.view addGestureRecognizer:screenEdgeGesOut];
 6     
 7     UIScreenEdgePanGestureRecognizer *screenEdgeGesIn = [[UIScreenEdgePanGestureRecognizer alloc]initWithTarget:self action:@selector(screenGesIn:)];
 8     screenEdgeGesIn.edges = UIRectEdgeRight;
 9     
10     [self.view addGestureRecognizer:screenEdgeGesIn];

3.實現手勢中的方法以及協議中的方法

//控制抽屜視圖彈出
- (void)screenGesOut:(UIScreenEdgePanGestureRecognizer *)ges{ UIView *tempUV = [self.view.window viewWithTag:DRAWERTAG]; if (_leftDrawerState == NO) { _leftDrawerState = YES; _maskView = [[UIView alloc]initWithFrame:self.view.frame]; [self.view addSubview:_maskView]; _maskView.backgroundColor = [UIColor lightGrayColor]; _maskView.alpha = 0.3; [UIView animateWithDuration:0.3 animations:^{ CGPoint ptDrawer = tempUV.center; ptDrawer.x += kSCREENWIDTH *3/4; tempUV.center = ptDrawer; // tabbarcontroller視圖動 CGPoint ptTabbar = self.tabBarController.view.center; ptTabbar.x += kSCREENWIDTH *3/4; self.tabBarController.view.center = ptTabbar; }]; } }
//控制抽屜視圖收回
- (void)screenGesIn:(UIScreenEdgePanGestureRecognizer *)ges{ UIView *tempUV = [self.view.window viewWithTag:DRAWERTAG]; if(_leftDrawerState == YES){ _leftDrawerState = NO; [_maskView removeFromSuperview]; [UIView animateWithDuration:0.3 animations:^{ CGPoint ptDrawer = tempUV.center; ptDrawer.x -= kSCREENWIDTH *3/4; tempUV.center = ptDrawer; // tabbarcontroller視圖動 CGPoint ptTabbar = self.tabBarController.view.center; ptTabbar.x -= kSCREENWIDTH *3/4; self.tabBarController.view.center = ptTabbar; }]; } } //頁面有多個手勢時 需要遵循協議-> UIGestureRecognizerDelegate 以及實現協議中的方法 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{ return YES; }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM