tabview 增加手势判断UIPanGestureRecognizer

转载 2012年03月27日 23:26:19
- (void)awakeFromNib{
 UIPanGestureRecognizer* recognizer;
    // handleSwipeFrom 是偵測到手势,所要呼叫的方法
    recognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanFrom:)];
    // 不同的 Recognizer 有不同的实体变数
    // 例如 SwipeGesture 可以指定方向
    // 而 TapGesture 則可以指定次數
    //recognizer.direction = UISwipeGestureRecognizerDirectionLeft | UISwipeGestureRecognizerDirectionRight;
    recognizer.delegate = self;
    [_tableView addGestureRecognizer:recognizer];
    [recognizer release];
}
 
- (BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)gestureRecognizer
{
    CGPoint translation = [gestureRecognizer translationInView:[[UIApplication sharedApplication] keyWindow]];
     
    // Check for horizontal gesture
    if (sqrt(translation.x * translation.x) / sqrt(translation.y * translation.y) > 1)
    {
        return YES;
    }
     
    return NO;
}
 
- (void)handlePanFrom:(UIPanGestureRecognizer*)recognizer {
 
    if (recognizer.state == UIGestureRecognizerStateBegan) {
        ;
    }
    else if (recognizer.state == UIGestureRecognizerStateChanged) {
        CGFloat xOffSet = [recognizer translationInView:[[UIApplication sharedApplication] keyWindow]].x;
         
        AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
        if (xOffSet < 0) {
            [appDelegate makeRightViewVisible];
        }
        else if (xOffSet > 0) {
            [appDelegate makeLeftViewVisible];
        }
         
        self.navigationController.view.frame = CGRectMake(xOffSet,
                                                          self.navigationController.view.frame.origin.y,
                                                          self.navigationController.view.frame.size.width,
                                                          self.navigationController.view.frame.size.height);
    }
    else if (recognizer.state == UIGestureRecognizerStateEnded) {
        if (self.navigationController.view.frame.origin.x < -kTriggerOffSet)
            [self moveToLeftSide];
        // animate to right side
        else if (self.navigationController.view.frame.origin.x > kTriggerOffSet)
            [self moveToRightSide];
        // reset
        else
            [self restoreViewLocation];
 
    }
}

相关文章推荐

UIPanGestureRecognizer 平滑手势例子

  • 2013年05月29日 23:06
  • 217KB
  • 下载

【iOS】UIPanGestureRecognizer拖拽手势

拖拽手势UIPanGestureRecognizer是什么? 拖拽手势顾名思义就是拖拽。苹果的官方文档是这样描述的: 使用有道词典翻译后是这样的: UIPanGestureRecognizer U...

24.手势识别之UIPanGestureRecognizer

UIPanGestureRecognizer它是拖动手势, 使用和前面的手势类似, 下面我们学习如何使用它1. UIPanGestureRecognizer的创建我们实现一个图片随着手指的移动而移动:...

IOS开发——自定义手势(拖动UIPanGestureRecognizer)

#import "HomePage.h" @interface HomePage () @property (strong, nonatomic) UIScrollView *gBootS...

利用UIPanGestureRecognizer手势全屏侧滑返回

在iOS开发中如果我们利用的navigationController(几乎每个项目都有吧!),当从根控制器跳转到下一个控制器再从下一个控制器返回的时候苹果为我们自带了侧滑返回的手势,但有两点需要注意:...

UIPanGestureRecognizer手势影响UISlider拖动的问题及解决办法 (转)

最近在使用UISlider控件控制音频播放进度时,遇到一个问题,即:UISlider所在的UIView上已经添加了 UIPanGestureRecognizer类型手势,用来处理向右拖动整个View时...
  • xlxying
  • xlxying
  • 2012年08月24日 00:23
  • 1883

页面加UIPanGestureRecognizer手势后,无法响应tableViewCell点击事件的解决办法

页面加UIPanGestureRecognizer手势后,无法响应tableViewCell点击事件的解决办法:  直接在viewcontroller中加代理方法  - (BOOL)g...

手势移除控制器(UIPanGestureRecognizer + UINavigationController)

// // CZNavigationController.m // 手势移除控制器 // // Created by pkxing on 14/12/10. // Copyright (c) ...
  • pkxwyf
  • pkxwyf
  • 2014年12月10日 23:20
  • 576

页面加UIPanGestureRecognizer手势后,无法响应tableViewCell点击事件的解决办法

转载:http://blog.csdn.net/u010990519/article/details/41893069 页面加UIPanGestureRecognizer手势后,无法响应table...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:tabview 增加手势判断UIPanGestureRecognizer
举报原因:
原因补充:

(最多只允许输入30个字)