gpt4 book ai didi

ios - 检测一个 UIView 何时位于另一个 UIView 之上

转载 作者:行者123 更新时间:2023-11-30 13:06:53 26 4
gpt4 key购买 nike

我有一个:

myViewController - UIViewController的子类

myFirstView - UIView的子类

mySecondView - UIView的子类

myFirstView 内部,我添加了一个名为 myLittleViewUIView 对象作为 myFirstView 窗口的 subview ( >UIWindow) 并向其中添加了一个 UIPanGestureRecognizer` 以便用户可以在窗口中拖动 View 。

我还在 myFirstView 中添加了一个名为 secondViewFrameCGRect 对象,其中包含 mySecondView 的框架对象'框架。

我已将 myFirstViewmySecondView 对象作为 subview 添加到 myViewController 的 View 中。

现在我想检查 myLittleView 是否位于 mySecondView 之上,我尝试将此代码添加到 UIPanGestureRecognizer 的操作中但它给出了错误的结果:

let pointInViewController = sender.translationInView(self.superview)
if self.secondViewFrame!.contains(pointInViewController) {
print("Inside")
}

知道如何让它发挥作用吗?

谢谢!

最佳答案

- (void)listSubviewsOfView:(UIView *)view {

// Get the subviews of the view
NSArray *subviews = [view subviews];

// Return if there are no subviews
if ([subviews count] == 0) return; // COUNT CHECK LINE

for (UIView *subview in subviews) {

// Do what you want to do with the subview
NSLog(@"%@", subview);

// List the subviews of subview
[self listSubviewsOfView:subview];
}
}

您可以稍微修改一下以检查 View 是否有带标签的 subview 。

使用标签更新

当你初始化第二个 View 时设置一个标签:

 [mySecondView setTag:10];

然后使用这个方法:

- (void)checkIfView:(UIView *)view isParentOfViewWithTag:(NSInteger)tag {

// Get the subviews of the view
NSArray *subviews = [view subviews];

// Return if there are no subviews
if ([subviews count] == 0) return; // COUNT CHECK LINE

for (UIView *subview in subviews) {

if ([subview tag]==tag) {
//Do something
NSLog(@"The view is parent of the view with tag 10");
break;
}

[self listSubviewsOfView:subview];
}
}

在您的代码上:

[self checkIfView:myLittLittleView isParentOfViewWithTag:10];

关于ios - 检测一个 UIView 何时位于另一个 UIView 之上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39251762/

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