HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 使用C4View子类,PAN手势结束不会触发“触摸结束”? (C4)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我正在使用 IOSC4编码框架,我遇到了一些我无法弄清楚的问题.

我一起使用了两个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)所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。