不同类别的手势识别器?

时间:2014-11-25 16:53:42

标签: ios objective-c

我想知道这是否可行。 要有一个类,它会将新的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];

不幸的是,点击手势方法永远不会被调用......如何才能正确完成? 谢谢!

2 个答案:

答案 0 :(得分:1)

尝试UITapGestureRecognizer

Apple Docs on UITapGestureRecognizer

答案 1 :(得分:1)

您发布的代码从未将headerPlusIcon添加到视图层次结构中。你在对Adam的回答中说你已经让它工作了,但我不知道如果你不将headerPlusIcon添加到你的视图控制器的内容视图层次结构中。

请注意,从外部看视图控制器的视图层次结构并不是很好的面向对象设计。

最好让视图控制器向另一个对象请求一个视图(可能通过一个协议),然后再添加该视图。