使用xib将tapGestureRecognizer添加到自定义UIView

时间:2012-09-10 16:38:17

标签: iphone objective-c ios uitapgesturerecognizer

背景:我有一系列问题,这些问题是设置一组uiviews并在屏幕上显示的基础。每个uiview都有一个标题和一个imageview。我想在imageview中添加一个tap手势识别器,并将uiview作为手势代表。

问题:无法通过uiview获取手势。

我到目前为止所尝试的内容:如果我使用带框架的init在代码中初始化视图,而不是通过主视图中将视图控件作为所有者加载到xib,而无需修改手势代码。所以我认为问题必须在于如何以及何时添加手势识别器。目前我正在使用一个加载问题名称的设置方法,然后将其添加到那里。从笔尖中清醒添加它不起作用。

这是加载每个uiview的循环中的代码

NSArray* bundle = [[NSBundle mainBundle] loadNibNamed:@"QnA" owner:self options:nil];

QuestionAnswer *qa;
for (id object in bundle) {
    if ([object isKindOfClass:[QuestionAnswer class]])
        qa = (QuestionAnswer *)object;
    }

CGRect f = qa.frame;
f.origin.x = x;
f.origin.y = y;
qa.frame = f;
[self.view addSubview: qa];
[qa setup:[questions objectAtIndex:i ]];

这是QuestionAnswer类中的“setup”方法

-(void)setup:(NSString *)label
{
    self.afl.text = label;
    UITapGestureRecognizer *tgr = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageTapped:)];
    tgr.delegate = self;
    [self addGestureRecognizer:tgr];

}

QuestionAnswer实现了UIGestureRecognizerDelegate。我在imageTapped的第一行有一个断点,它永远不会到达那里。我也尝试将手势识别器直接应用于imageview无济于事。

viewcontroller在splitview控制器中,当我在代码中初始化视图时,不要认为它与识别器有关。 :/

1 个答案:

答案 0 :(得分:0)

在viewDidLoad方法中添加手势识别器。