私はサブビューとしてUIViewsの束を追加しているUIViewControllerを持っています。次に、それぞれにUIGestureRecognizerを添付して、タップがあるときに通知を受けることができます。ここでのUIViewController内のコードは次のとおりです。UIGestureRecognizerイベントを取得し、ルートコンテナビューを取得する最も良い方法は?
- (void)attachSubview{
UIImageView *childView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"child"]] ;
UITapGestureRecognizer *singleFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapped:)];
[childView addGestureRecognizer:singleFingerTap];
[self.view addSubView childView];
}
- (void)tapped:(UITapGestureRecognizer *)recognizer{
NSLog(@"Tapped view : %@", recognizer.view);
NSLog(@"The root view is : %@", self.view);
}
は今、ここで問題です:私は実際には別々のクラスにこれらの2つの方法を抽出したいです。この場合、self.view
をtapped:
メソッド内で使用することはできません。なぜなら、selfはもうviewcontrollerクラスではないからです。
私は、単にレコグナイザオブジェクトを取得し、何らかの形でイメージビューが属するルートビューを取得するのが簡単で効率的な方法を希望します。これを行う最善の方法と将来の証明方法は何ですか?
カスタムサブビューを作成し、デリゲートを使用することができ、この場合は – Misha