已解决:查看评论了解问题所在
我正在 UIScrollView 上实现一个子类,它将是一个水平滚动的 subview /“单元格”行。基本上是一个水平滚动的“表格 View ”之类的元素。 UIScrollView 内容 View 中的每个 subview /“单元格”都附加了一个 UIGestureRecognizer,这样当有人触摸其中一个时,UIGestureRecognizer 就会触发。
问题是,当一个人滚动离开 contentView 原点时,即 UIScrollView 返回一个 contentOffset,其中 x 不是 0,任何从右侧滚动的新 subview /“单元格”都不会触发触摸时的 UIGestureRecognizer。所有 subview 都有自己的 UIGestureRecognizer。
例如,假设我显示一行 80x80 图标,我的 contentSize 是 1600,80 一行 20 个图标。 UIScrollView 是 320,80 所以它会显示 4 个图标。最初的 4 个图标是可触摸的,UIGestureRecognizer 在每个图标上触发。用户向左滚动,即新图标从右侧进入。这些新图标( subview )被创建并添加到我在 UIScrollView 中使用的 contentView 中,方式与原始 4 相同。但是不在原始范围内的新图标( subview )不会触发。我实现了自己的 subview 队列/出队,类似于 tableview 所做的,如果我滚动到 #15 位置,原始图标( subview )甚至都不在 contentView 中,因为 subview 被回收(并且旧的 UIGestureRecognizers 被删除以及当它从队列中拉出并重新使用时附加的新的)并且这些都不是可触摸的并触发 UIGestureRecognizer。
但是,如果用户然后滚动回到开头,即使这些单元格是新添加到 contentView 的,只要它们的边界在 UIScrollView 的原始框架和我用来聚合的 UIView contentView 内,它们就是可触摸的在 ScrollView 中。所以它似乎取决于每个 subview 的框架以及它是否位于 ScrollView 的框架内。
一切都显示正常——因为它滚动 contentOffset 变化,我删除和添加 subview 。只是附加到每个 subview 的 UIGestureRecognizers 不会触发,并且位置取决于在 ScrollView 开始滚动之前位于 ScrollView 的原始边界内。
我整天都在摸不着头脑,昨天还有半天)并将其缩小到位置依赖于其他任何东西。
我会发布代码,但不确定要发布什么,因为有很多运行此代码的代码。
最佳答案
我将 UIView 子类化,将其添加到 UIScrollView 中,并且我的子类化 UIView 的 subview 的手势识别器没有触发 - 除了那些在滚动之前最初可见的那些。
简单的解决方法是将 UIView 的 subview 直接添加到 UIScrollView 而不是我的子类 UIView。在我做之前
// add to view
[self addSubview:imageView];
所以我修复了它
// add to view - we're adding to the superview directly
[self.superview addSubview:imageView];
这样我仍然可以将填充 UIScrolView 的逻辑保留在单独的类中。
关于ios - UIScrollView 当 contentOffset 不在原点时,不触发附加到 subview 的 UIGestureRecognizers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12223348/
我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢
请帮助我理解范围运算符...和..之间的区别,作为Ruby中使用的“触发器”。这是PragmaticProgrammersguidetoRuby中的一个示例:a=(11..20).collect{|i|(i%4==0)..(i%3==0)?i:nil}返回:[nil,12,nil,nil,nil,16,17,18,nil,20]还有:a=(11..20).collect{|i|(i%4==0)...(i%3==0)?i:nil}返回:[nil,12,13,14,15,16,17,18,nil,20] 最佳答案 触发器(又名f/f)是
我正在学习Rails,并阅读了关于乐观锁的内容。我已将类型为integer的lock_version列添加到我的articles表中。但现在每当我第一次尝试更新记录时,我都会收到StaleObjectError异常。这是我的迁移:classAddLockVersionToArticle当我尝试通过Rails控制台更新文章时:article=Article.first=>#我这样做:article.title="newtitle"article.save我明白了:(0.3ms)begintransaction(0.3ms)UPDATE"articles"SET"title"='dwdwd
我刚刚被困在这个问题上一段时间了。以这个基地为例:moduleTopclassTestendmoduleFooendend稍后,我可以通过这样做在Foo中定义扩展Test的类:moduleTopmoduleFooclassSomeTest但是,如果我尝试通过使用::指定模块来最小化缩进:moduleTop::FooclassFailure这失败了:NameError:uninitializedconstantTop::Foo::Test这是一个错误,还是仅仅是Ruby解析变量名的方式的逻辑结果? 最佳答案 Isthisabug,or
这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下
我有一个rubyonrails应用程序。我按照facebook的说明添加了一个像素。但是,要跟踪转化,Facebook要求您将页面置于达到预期结果时出现的转化中。即,如果我想显示客户已注册,我会将您注册后转到的页面作为成功对象进行跟踪。我的问题是,当客户注册时,在我的应用程序中没有登陆页面。该应用程序将用户带回主页。它在主页上显示了一条消息,所以我想看看是否有一种方法可以跟踪来自Controller操作而不是实际页面的转化。我需要计数的Action没有页面,它们是ControllerAction。是否有任何人都知道的关于如何执行此操作的gem、文档或最佳实践?这是进入布局文件的像素
我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的
1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里
print"Enteryourpassword:"pass=STDIN.noecho(&:gets)puts"Yourpasswordis#{pass}!"输出:Enteryourpassword:input.rb:2:in`':undefinedmethod`noecho'for#>(NoMethodError) 最佳答案 一开始require'io/console'后来的Ruby1.9.3 关于ruby-为什么不能使用类IO的实例方法noecho?,我们在StackOverflow上
我有一个super简单的脚本,它几乎包含了FayeWebSocketGitHub页面上用于处理关闭连接的内容:ws=Faye::WebSocket::Client.new(url,nil,:headers=>headers)ws.on:opendo|event|p[:open]#sendpingcommand#sendtestcommand#ws.send({command:'test'}.to_json)endws.on:messagedo|event|#hereistheentrypointfordatacomingfromtheserver.pJSON.parse(event.d