我想知道这是否可行。 要有一个类,它会将新的imageView添加到主视图中,并为其指定一个手势识别器。
所以在我的视图构建器类中,我有以下内容:
UIImageView *headerPlusIcon = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"plusIcon.png"]];
headerPlusIcon.frame = CGRectMake(header.frame.size.width - 2.5*(logoSize - 8), yPosition*1.6, logoSize*0.9, logoSize*0.9);
headerPlusIcon.userInteractionEnabled = YES;
UIGestureRecognizer *headerTapGesture = [[UIGestureRecognizer alloc] initWithTarget:mainView action:@selector(testTapGesture:)];
[headerPlusIcon addGestureRecognizer:headerTapGesture];
点击手势方法如下:
-(void)testTapGesture:(UITapGestureRecognizer *)gesture
{
dispatch_async(dispatch_get_main_queue(), ^{
mainView.backgroundColor = [UIColor redColor];
});
}
mainView通过构造函数传递给这个类,只是主视图。
这就是这样的:
mainViewbuilder = [[MainViewBuilder alloc] initWithBaseView:self.view];
[mainViewbuilder buildHeader];
不幸的是,点击手势方法永远不会被调用......如何才能正确完成? 谢谢!
答案 0 :(得分:1)
尝试UITapGestureRecognizer
答案 1 :(得分:1)
您发布的代码从未将headerPlusIcon添加到视图层次结构中。你在对Adam的回答中说你已经让它工作了,但我不知道如果你不将headerPlusIcon添加到你的视图控制器的内容视图层次结构中。
请注意,从外部看视图控制器的视图层次结构并不是很好的面向对象设计。
最好让视图控制器向另一个对象请求一个视图(可能通过一个协议),然后再添加该视图。