我有一个UIImageCustom对象,该对象扩展了UIImageView,并且在一个此类中,我想在一个方法中获取实例ViewController,其中添加了我的对象UICustom。
在我的类UIImageCustom的touchesBegan方法中,当我触摸UIImage时,我想在ViewController中添加其他UIImage:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UIImageView* newImageView=[[UIImageView alloc] initWithFrame:CGRectMake(60, 200, 200, 200)];
//Here I need add newImageView in my ViewController
[??? addSubview:newImageView];
}
有人可以帮我吗?
最佳答案
您可以通过多种方式进行此操作(在UIImageCustom
类中设置自定义属性,只需将UIImageCustom
将此新图像视图添加到自己的superview
(例如[self.superview addSubview:newImageView]
)中即可。但是这些方法从概念上来说似乎是一个视图不应该在自身之外添加任何其他内容(并且,如果您关闭了剪切功能,则将此新图像视图添加为UIImageCustom
本身的子视图可能是另一种方法,肯定比前两种更令人讨厌我提到了)。
但我可能会建议其他几种方法:
如果您的目标只是避免重复触摸代码,则可以将其放在手势识别器子类中,而不是将其附加到某些随机的UIImageView
子类中。手势识别器是放置此类与触摸相关的代码的正确位置。请参阅《 iOS事件处理指南》的Gesture Recognizers部分。
或者,如果您确实需要将此手势与一堆图像视图结合使用,则可以使用自定义容器视图控制器来调解手势和图像视图之间的交互。有关更多信息,请参见《 View Controller编程指南》中的Creating Custom Container View Controllers。
但是您可以将触摸代码和这两个图像视图的处理全部包装在一个视图控制器中,然后使用视图控制器包含将其添加到现有的视图控制器中。
我们对特定设计的了解还不够,无法相互推荐,但这是需要遵循的一些想法。自定义手势识别器方法很可能应该绰绰有余。