我一起使用了两个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消除了对所有手势的支持.我想是问题在那里?
抱歉,如果有一个简单的解决方案,但我在试图解决这个问题时迷失了方向.
解决方法 移动:您添加到Walker的PAN手势的方法实际上是引用C4Control类中内置的方法(即所有可视对象).要确定何时释放手势,您可以覆盖该方法以添加检查手势状态何时结束的条件.
为此,首先将C4对象子类化(这里我使用的是C4Shape,但您可以使用C4Image).
标题将如下所示:
#import "C4Shape.h"@interface MyShape : C4Shape@end
该实现将有一个重写的move:方法,如下所示:
#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)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)