背景: 一連の uiview をセットアップして画面に配置するための基礎となる一連の質問があります。各 uiview には、タイトルとイメージビューがあります。imageview にタップ ジェスチャ レコグナイザを追加し、uiview をジェスチャ デリゲートにしたいと考えています。
問題: uiview がジェスチャを取得できません。
これまでに試したこと: ビューコントローラーを所有者としてメインバンドルを介して xib をロードする代わりに、init with frame を使用してコードでビューを初期化すると、ジェスチャコードを変更せずに機能します。したがって、問題はジェスチャ認識機能を追加する方法とタイミングにあるに違いないと思います。現在、質問名をロードしてそこに追加するセットアップメソッドを使用しています。ペン先から目を覚ましてそれを追加しても機能しません。
これは、各 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 の最初の行にブレークポイントがあり、そこに到達しません。また、ジェスチャ認識機能をイメージビューに直接適用しようとしましたが、役に立ちませんでした。
ビューコントローラーはスプリットビューコントローラーにあります。コードでビューを初期化したときに認識機能が機能したため、関連性があるとは思わないでください。:/