现在,在我的几个 iOS 应用程序中,我需要递归地获取相邻视图。我想知道我们有没有类似的东西viewAtLocation:(CGPoint)location
?或者我们有任何方法可以实现它。
我使用了几种方法,例如 C 数组id matrix[row][col]
,位置由大小决定作为索引值,然后检索所有方法,然后在循环中一一subview
检查等。虽然这些方法对我有用,但这些方法似乎不太好,或者说不适合我。location
那么我们还能拥有什么?
现在,在我的几个 iOS 应用程序中,我需要递归地获取相邻视图。我想知道我们有没有类似的东西viewAtLocation:(CGPoint)location
?或者我们有任何方法可以实现它。
我使用了几种方法,例如 C 数组id matrix[row][col]
,位置由大小决定作为索引值,然后检索所有方法,然后在循环中一一subview
检查等。虽然这些方法对我有用,但这些方法似乎不太好,或者说不适合我。location
那么我们还能拥有什么?
最好使用标准hitTest:withEvent
,如果它的不透明度为 0.0,它将处理诸如忽略视图之类的事情。nil
文档说在手动调用它时传递事件。
对于使用pointInside:withEvent:
.
下面的代码会为你做的,兄弟
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;
}
}
}