說明:以下方法是開發中使用的方法,有什么不對的或者好的方法,請多多指教!
此處的邊緣手勢是用來控制左側抽屜視圖的彈出以及收回。
添加手勢 :
- 頁面上有多個手勢時需要遵循 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; }