我有一个带有自定义单元格的UITableView,当您触摸该单元格时,它将添加一个UIImageView的子视图。
我希望图像在用户将手指抬起之后消失,并且在UIImageVIew子视图上有一个touchesEnded方法,但从未调用过。
仅当您抬起手指然后再次向下按并释放它时,才会调用它。
如何获得在原始触摸结束时要调用的方法。
我有点想当您查看图像时Snapchat会做什么。
最佳答案
子视图没有获得touchesEnded
事件的原因是它没有接收到touchesBegan
事件:这两个成对出现-无论哪个视图开始触摸,都将结束触摸。您的UIImageView
无法获得touchesEnded
,因为当时不存在。当您按下并释放时,它将第二次获得touchesEnded
,因为这两个事件都存在。
有几种方法可以解决此问题:
UIImageView
的同时,删除视图的位置-添加子视图时,将对其的__weak
引用存储在单独的变量中。当添加UIImageView
的视图获得touchesEnded
事件时,请转到该变量,然后删除子视图。 UIImageView
保留在此处,但控制其透明度-而不是添加和删除子控件,将其完全透明地启动,然后使其在触摸时不透明,然后在发布时再次透明。 UIImageView
,请使用CALayer
代替-似乎您只是在短期内添加图像视图以在其中托管图像。有一种更简单的方法,它更轻松-使用CALayer
。这种方法应该更易于实现,因为该层不参与触摸事件的处理。 关于ios - 将触摸转移到subView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18218395/