iphone – 转发UIGesture到后面的意见

iphone – 转发UIGesture到后面的意见,第1张

概述我正在做一个iphone(iOS 4.0或更高版本)应用程序,并有一些麻烦与多个视图之间的触摸处理。我有一个这样的视图结构 ---> A superView | ---> SubView - A | ---> SubView - B (exactly on top of A, completely blocking A). 基本上我有一个superVie @H_419_6@ 我正在做一个iphone(iOS 4.0或更高版本)应用程序,并有一些麻烦与多个视图之间的触摸处理。我有一个这样的视图结构

---> 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)顶部的视图,以获得左右滑动。但现在我想转发其他手势事件到底层图书馆。

解决方法 如果我undestand你的问题正确,你可以只是添加另一个,清除视图与rect,与你A和B视图相同,并实现所有手势上:当你做捏手势,控制subVIEw 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到后面的意见所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1087921.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存