0

現在、いくつかの iOS アプリケーションで、隣接するビューを再帰的に取得する必要があります。のようなものがあるのだろうviewAtLocation:(CGPoint)locationか?または、それを実装する方法はあります。

id matrix[row][col]サイズで決定された位置をインデックス値としてC配列を使用し、すべてを取得してループ内で1つずつsubviewチェックするなど、いくつかの方法を使用しました。locationでは、他に何ができるでしょうか?

4

2 に答える 2

3

hitTest:withEvent不透明度が 0.0 の場合にビューを無視するなどの処理を行う標準を使用することをお勧めします。ドキュメントには、nil手動で呼び出すときにイベントを渡すように記載されています。

これは、 を使用して境界を拡張したビューに対しても正しく動作しますpointInside:withEvent:

于 2012-12-05T14:52:17.267 に答える
1

次のコードはあなたのためにそれを行います

UIView *view = <Your View>;
UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
[view addGestureRecognizer:recognizer];
[recognizer release];

- (void)handleSingleTap:(UITapGestureRecognizer*)recognizer{

    CGPoint p = [recognizer locationInView:recognizer.view];
    for (UIView *v in recognizer.view.subviews) {
        if (CGRectContainsPoint(v.frame, p)) {
            NSLog(@"view Found with frame %@",NSStringFromCGRect(v.frame));
            //If your views doesn't overlap then break from here
            break;
        }
    }
}
于 2012-12-05T14:46:02.560 に答える