0

现在,在我的几个 iOS 应用程序中,我需要递归地获取相邻视图。我想知道我们有没有类似的东西viewAtLocation:(CGPoint)location?或者我们有任何方法可以实现它。

我使用了几种方法,例如 C 数组id matrix[row][col],位置由大小决定作为索引值,然后检索所有方法,然后在循环中一一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 回答