所以我正在使用 C4 IOS 的编码框架,我遇到了一些我不太明白的事情。
我为 C4 github 使用了两个示例一起考虑 - testScrollView 和 WalkCycle 示例。
我有一个名为 Walker 的 C4View 子类,它使用 WalkCycle 示例作为小型动画角色的模板。这个角色被放置在从 testScrollView 示例创建的可 ScrollView 中。他添加了一个平移手势,这样用户就可以将他拖到屏幕顶部,然后看着他掉落在屏幕底部。
唯一的问题是我无法在平移手势结束时调用任何类型的方法,不是来自 -(void)touchesEnded 命令,也不是来 self 尝试过的其他命令。
一些指向类似问题的链接对我没有帮助,但可能会帮助其他人解决这个问题:
我完全没有受过教育和毫无根据的直觉是,它与 walker 作为 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 和平移手势。到现在为止....将其改回 C4View 会消除对所有手势的支持。我想问题出在哪里?
如果有一个简单的解决方案,我深表歉意,但我在尝试解决这个问题时迷失了方向。
最佳答案
添加到 Walker 的 PAN 手势的 move: 方法实际上引用了 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, 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 上使用手势。您可以将常规 UIGestureRecognizers 添加到 C4Views,但是方法 [object addGesture:name:action:] 将不起作用,因为我们还没有为 C4View 类实现它(但它在我们的待办事项列表中)已经)。
关于ios - 使用 C4View 子类结束时 PAN 手势不触发 'touches ended'? (C4),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13869863/
我正在尝试测试是否存在表单。我是Rails新手。我的new.html.erb_spec.rb文件的内容是:require'spec_helper'describe"messages/new.html.erb"doit"shouldrendertheform"dorender'/messages/new.html.erb'reponse.shouldhave_form_putting_to(@message)with_submit_buttonendendView本身,new.html.erb,有代码:当我运行rspec时,它失败了:1)messages/new.html.erbshou
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
我需要从一个View访问多个模型。以前,我的links_controller仅用于提供以不同方式排序的链接资源。现在我想包括一个部分(我假设)显示按分数排序的顶级用户(@users=User.all.sort_by(&:score))我知道我可以将此代码插入每个链接操作并从View访问它,但这似乎不是“ruby方式”,我将需要在不久的将来访问更多模型。这可能会变得很脏,是否有针对这种情况的任何技术?注意事项:我认为我的应用程序正朝着单一格式和动态页面内容的方向发展,本质上是一个典型的网络应用程序。我知道before_filter但考虑到我希望应用程序进入的方向,这似乎很麻烦。最终从任何
我想要做的是有2个不同的Controller,client和test_client。客户端Controller已经构建,我想创建一个test_clientController,我可以使用它来玩弄客户端的UI并根据需要进行调整。我主要是想绕过我在客户端中内置的验证及其对加载数据的管理Controller的依赖。所以我希望test_clientController加载示例数据集,然后呈现客户端Controller的索引View,以便我可以调整客户端UI。就是这样。我在test_clients索引方法中试过这个:classTestClientdefindexrender:template=>
我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer
在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',
我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby1.9+ 关于ruby-主要:Objectwhenrun
我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳
我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="
关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion在首页我有:汽车:VolvoSaabMercedesAudistatic_pages_spec.rb中的测试代码:it"shouldhavetherightselect"dovisithome_pathit{shouldhave_select('cars',:options=>['volvo','saab','mercedes','audi'])}end响应是rspec./spec/request