大佬教程收集整理的这篇文章主要介绍了iphone – 转发UIGesture到后面的意见,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
---> A superView | ---> SubView - A | ---> SubView - B (exactly on top of A,completely blocking A).
基本上我有一个superView,兄弟的子视图A和B. B有相同的框架A,因此完全隐藏A.
现在我的要求是这样。
> SubView B应该接收所有滑动和点击(单和双)
手势。
> SubView A应该接收所有捏合手势。
UISwipeGestureRecognizer *leftSwipe = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@SELEctor(leftSwipe:)]; [leftSwipe setDirection:(UISwipeGestureRecognizerDirectionLeft)]; leftSwipe.delegate = self; [bView addGestureRecognizer:leftSwipe]; [leftSwipe release]; UISwipeGestureRecognizer *rightSwipe = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@SELEctor(rightSwipe:)]; [rightSwipe setDirection:(UISwipeGestureRecognizerDirectionRight)]; rightSwipe.delegate = self; [bView addGestureRecognizer:rightSwipe]; [rightSwipe release]; UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@SELEctor(handlePinch:)]; pinch.delegate = self; [aView addGestureRecognizer:pinch]; [pinch release];
我做了一些研究,对我UIGestureRecognizerDelegate看起来有希望,我实现委托方法
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
我为SubView B返回NO,希望基础视图将获得这些事件。没有这样的运气,虽然
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{ if ([gestureRecognizer isKindOfClass:[UIPinchGestureRecognizer class]] && [gestureRecognizer view] == bView) { NSLog(@"pinchGesture"); //bView.userInteractionEnabled = NO; return NO; } return YES; }
然后我禁用用户交互的SubView B里面的代理回调(注释代码在上面的块),当捏合手势被识别,希望手势的剩余部分将被SubView A接收。没有这样的运气有太多。
这就是我现在所在的地方。我已经看到this问题,其中接受的答案涉及属性cancelsTouchesInView。但我相信cancelsTouchesInView只取消一个特定的触摸事件,不要转发它。
任何其他方式来实现我的要求?我准备工作你提供的任何提示。
编辑:BOUNTY时间
我所谓的subView A实际上是一个第三方库的View类的实例,它需要所有的触摸,我没有任何控制任何手势上。我想要不同的实施左右滑动,我想捏,点击等工作就像它是使用这个第三方视图。所以我把A(SubView B)顶部的视图,以获得左右滑动。但现在我想转发其他手势事件到底层图书馆。
例如:
UISwipeGestureRecognizer *leftSwipe = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@SELEctor(leftSwipe:)]; [leftSwipe setDirection:(UISwipeGestureRecognizerDirectionLeft)]; leftSwipe.delegate = subViewAcontroller; [clearView addGestureRecognizer:leftSwipe]; [leftSwipe release]; UISwipeGestureRecognizer *rightSwipe = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@SELEctor(rightSwipe:)]; [rightSwipe setDirection:(UISwipeGestureRecognizerDirectionRight)]; rightSwipe.delegate = subViewAcontroller; [clearView addGestureRecognizer:rightSwipe]; [rightSwipe release]; UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@SELEctor(handlePinch:)]; pinch.delegate = subViewBcontroller; [clearView addGestureRecognizer:pinch]; [pinch release];
要么:
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{ if ([gestureRecognizer isKindOfClass:[UIPinchGestureRecognizer class]]) { NSLog(@"pinchGesture"); [subViewBcontroller solvePinchGesture: gestureRecognizer]; } //etc return YES; }
以上是大佬教程为你收集整理的iphone – 转发UIGesture到后面的意见全部内容,希望文章能够帮你解决iphone – 转发UIGesture到后面的意见所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。