gpt4 book ai didi

iphone - 使用 hitTest :? 获取 UIView 上的最低 View

转载 作者:行者123 更新时间:2023-11-29 03:49:18 24 4
gpt4 key购买 nike

所以我的 View 从最低 View 看起来像这样

[L] UIView -> [K] View -> [M] View

myview

由于某些情况下[K]位于[M]之下,所以当我执行UIView hitTest: check on [L]时,它总是返回[M] View 。

有没有办法从 hitTest 获取最低的 subview :?

谢谢。

最佳答案

我希望我理解你的问题:
您具有以下 View 层次结构, View 1 View 2

覆盖
+ Root View
| - View 1
| - View 2

然后,您在 Root View 上执行 -[UIView hitTest:withEvent:],知道该点位于 View 1 内,并且在 View 2 内。 但是此方法返回 View 2,因为它位于顶部。

如果您想获取View 1,您可以使用以下内容:

@implementation UIView (ExtendedHitTest)
- (UIView *)extendedHitTest:(CGPoint)point withEvent:(UIEvent *)event
{
__block UIView *result;
NSArray *hitTestSiblings = [self hitTest:point withEvent:event].superview.subviews;
[hitTestSiblings enumerateObjectsUsingBlock:^(UIView *view, NSUInteger idx, BOOL *stop) {
if ([view pointInside:[self convertPoint:point toView:view] withEvent:event]) {
result = view;
*stop = YES;
}
}];
return result;
}
@end

使用 anUIView.superview.subviews,您可以获得 anUIView 的所有同级,其中最顶层的 View 作为最后一个对象 - 这意味着您将首先遇到 View 1,然后查看 2

关于iphone - 使用 hitTest :? 获取 UIView 上的最低 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17262533/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com