gpt4 book ai didi

ios - Swift:在另一个 UIView 下对 UIView 进行 hitTest

转载 作者:搜寻专家 更新时间:2023-10-31 08:11:35 25 4
gpt4 key购买 nike

我在 RedOrGreenUIView 之上有 TransparentUIView。 TransparentUIView 有一个 UILongPressGestureRecognizer 附加到它。一旦用户开始长按它,我检查这个 LongPressGesture 的 .Changed 状态,并执行下面的 hitTest:

var p:CGPoint = rec.locationInView(self.view)
var selectedView = view.hitTest(p, withEvent: nil)
if selectedView != nil {
if selectedView == TransparentUIView {
println("TransparentUIView is being touched")
}
}

我将 TransparentView 作为 selectedView 正常。但是我需要能够同时对 RedOrGreenUIView 进行 hitTest,它位于 TransparentUIView 之下。我无法全神贯注地完成这项工作。请帮忙。

最佳答案

为您的容器创建自定义 View 并覆盖 pointInside: 消息以在点不在符合条件的 subview 内时返回 NO,如下所示:

@interface PassthroughView : UIView
@end

@implementation PassthroughView
-(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {
for (UIView *view in self.subviews) {
if (!view.hidden && view.alpha > 0 && view.userInteractionEnabled && [view pointInside:[self convertPoint:point toView:view] withEvent:event])
return YES;
}
return NO;
}
@end

快速版本

class PassThroughView: UIView {

override func pointInside(point: CGPoint, withEvent event: UIEvent?) -> Bool {
for subview in subviews as [UIView] {
if !subview.hidden && subview.alpha > 0 && subview.userInteractionEnabled && subview.pointInside(convertPoint(point, toView: subview), withEvent: event) {
return true
}
}
return false
}
}

关于ios - Swift:在另一个 UIView 下对 UIView 进行 hitTest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29107849/

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