2012-12-05 35 views
0

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

我已经使用了几种方式,如C数组id matrix[row][col]与大小来决定作为指标值的位置,并检索所有subview然后通过循环检查location逐一等。虽然这些工作对我来说不过这些似乎并不好或适合我。那么我们还能拥有什么?

+0

请您详细说明'相邻视图'是什么意思? –

+0

@Mohit_Jaiswal其实第一行描述的情况,只是我正在处理的。仍然与邻近我的意思是接下来,前,上下。但问题并没有太多。 – rptwsthi

+0

所以,我在可见视图中看到的是,您有多个视图,并且您需要/打算获取该视图的位置。我对吗?那么,如果这种情况比我认为这不是件难事,让我先解释一下,然后再回到你身边。 –

回答

3

这是最好的使用标准hitTest:withEvent将处理之类的东西忽视了一个观点,如果它的不透明度为0.0以下代码将做到这一点。文档中说,手动调用该事件时会传入nil

对于任何使用pointInside:withEvent:扩展边界的视图,这也会正确运行。

+0

谢谢这就是我正在寻找的东西,但在那里有很大的文档.. – rptwsthi

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; 
     } 
    } 
} 
+0

感谢亲爱的,但正如我所提到的,**“并检索所有子视图,然后在一个循环等逐一检查位置。”**我已经完成并确定它的工作.. :)因此+1 .. – rptwsthi

+0

那么如果你不想要l then,那么我宁愿使用我的预期设计定制UIButton。每个按钮都有独特的标签。我可以根据标签决定现在点击哪个按钮。 –

+0

检查接受答案.. :),我们可能有其他许多任务的标签..我们通常有。 – rptwsthi