背景:我有一系列问题,这些问题是设置一堆 uiview 并将它们布置在屏幕上的基础。每个 uiview 都有一个标题和一个 imageview。我想向 imageview 添加一个点击手势识别器,并让 uiview 成为手势代表。
问题:无法让uiview接收到手势。
到目前为止我所尝试的:如果我使用带有框架的 init 在代码中初始化视图,而不是通过主捆绑包以 viewcontroller 作为所有者加载 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 类中的“设置”方法
-(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 的第一行有一个断点,但它永远不会到达那里。我还尝试将手势识别器直接应用于图像视图,但无济于事。
viewcontroller 在 splitview 控制器中,当我在代码中初始化视图时,不要认为这与识别器工作有关。:/