大佬教程收集整理的这篇文章主要介绍了ios – 使用C4View子类,PAN手势结束不会触发“触摸结束”? (C4),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我一起使用了两个C4 github帐户的例子 – testScrollView和WalkCycle示例.
我有一个名为Walker的C4View子类,它使用WalkCycle示例作为小动画角色的模板.此字符放在从testScrollView示例创建的可滚动视图中.他添加了一个平移手势,以便用户可以将他拖到屏幕顶部,然后看着他摔倒在底部.
唯一的问题是我无法在平移手势结束时调用任何类型的方法,而不是来自 – (void)touchesEnded命令,而不是来自我尝试过的其他人.
一些链接到类似的问题没有帮助我,但可能有助于其他人解决这个问题:
> Detecting Pan Gesture
End
> Number of touches in PAN gesture is not
working
> UIViewController not responding properly to
gestures…
我完全没有受过教育和毫无根据的预感是,它与步行者是C4View的孩子有关,因为我没有这个问题识别touchesEnded与c4shapes和图像.
我不确定要为代码发布什么,但这里是来自Walker.m的相关内容;
-(void)setup { walkA = [C4Image animatedImageWithNames:@[@"beaviswalk1.tiff",@"beaviswalk2.tiff",@"beaviswalk3.tiff",@"beaviswalk4.tiff",@"beaviswalk5.tiff",@"beaviswalk6.tiff",@"beaviswalk7.tiff",@"beaviswalk8.tiff",@"beaviswalk9.tiff",]]; [self addImage:walkA]; currentImage = walkA; [walkA play]; mover = [C4Timer automatictimerWithInterval:0.05f target:self method:@"walking" repeats:YES]; [self addGesture:TAP name:@"tapGesture" action:@"trip"]; [self addGesture:PAN name:@"panGesture" action:@"move:"];}
和touchesEnded:
-(void)touchesEnded { C4Log(@"touches Ended"); }
看着Walker.h我才意识到奇怪的事情;
#import "C4View.h" @interface Walker : C4Image -(id)initWithFrame:(CGRect)frame; -(void)play; -(void)switchWalkCycle; -(void)trip; -(void)bleed; -(void)walking; -(void)touchesEnded; -(void)noTouching; @end
我在某个时刻将@interface更改为C4Image,当时它似乎没有任何效果,并允许我使用TAP和PAN手势.直到现在……将其更改回C4View消除了对所有手势的支持.我想是问题在那里?
要确定何时释放手势,您可以覆盖该方法以添加检查手势状态何时结束的条件.
为此,首先将C4对象子类化(这里我使用的是C4Shape,但您可以使用C4ImagE).
标题将如下所示:
#import "C4Shape.h" @interface MyShape : C4Shape @end
#import "MyShape.h" @implementation MyShape -(void)move:(id)sender { [super move:sender]; UIPanGestureRecognizer *panGesture = (UIPanGestureRecognizer *)sender; if(panGesture.state == UIGestureRecognizerStateEnded) { [self methodToRunWhenPanGestureEnds]; } } -(void)methodToRunWhenPanGestureEnds { C4Log(@"the pan gesture ended"); } @end
…最后,在您的工作区中,您可以像平常一样创建一个对象并添加一个手势.
#import "C4WorkSpace.h" #import "MyShape.h" @implementation C4WorkSpace -(void)setup { MyShape *s = [[MyShape alloc] initWithFrame:CGRectMake(0,100,100)]; [s rect:s.frame]; [s addGesture:PAN name:@"pan" action:@"move:"]; [self.canvas addShape:s]; } @end
您可以从此处获取C4项目的副本,该项目显示如何执行此操作:https://github.com/C4Code/PanGestureEnded
至于你所遇到的C4View问题,你是对的……你现在不会在C4Views上做手势.你可以在C4Views中添加常规的UIGestureRecognizers,但方法[object addGesture:name:action:]将不起作用,因为我们还没有为C4View类实现这个(但它已经在我们的待办事项列表中了).
以上是大佬教程为你收集整理的ios – 使用C4View子类,PAN手势结束不会触发“触摸结束”? (C4)全部内容,希望文章能够帮你解决ios – 使用C4View子类,PAN手势结束不会触发“触摸结束”? (C4)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。