UIPanGestureRecognizer手势的互相传递

        最近作项目,又遇到了UIPanGestureRecognizer手势的传递问题,大致相当于网易新闻的侧边栏以及UIScrollView的互相传递的问题。觉得还是把解决办法写下来吧,第一次写技术博客,嘿嘿,人懒不喜欢写,这不好,要多写才是对的。好了,开始。

1、发现的问题

        当主View是侧边栏的contentView,contentVIew又有一个UIScrollView的subVIew的时候,这时,scrollView会先获取UIPanGestureRecognizer,并对它进行处理。但是,我们希望,在scrollView的到达左右边界的时候,将滑动手势传递给contentView,从而进行侧边栏视图的展现。这时就需要将scrollVIew的UIPanGestureRecognizer传递给ContentVIew的手势处理方法。

2、解决办法

      第一,判断边界,使用scrollViewDidScroll方法,通过crollView.contentOffset.x来判断是否到达边界。

      第二,在到达边界后,将scrollView.panGestureRecognizer传递进contentView的手势处理方法中。

              [self handlePanGesture:scrollView.panGestureRecognizer];

      就这两步,当然,如果你的手势处理需要判断手势的state的时候,你就需要将scrollView.panGestureRecognizer的各个状态传递过去。

scrollView的panGestureRecognizer的state,是readonly属性,所以需要在scrollView的代理方法中去传递。

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;这个方法传递的state是:UIGestureRecognizerStateBegan。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView;这个方法传递的state是:UIGestureRecognizerStateChanged。

-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;这个方法传递的state是:UIGestureRecognizerStateEnded。


      当然,这并不全面,其他代理方法没有尝试,你可以NSLog打印出scrollView.panGestureRecognizer的state,即可明了。

      第一次写,渣排版,下次改进吧。签到打卡,2014年5月27日。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值