gpt4 book ai didi

iphone - HitTest 以避免 subview 但希望另一个 subview 工作

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

我有一个只有灰色的背景 subview ,上面有可以拖动的图 block 。这一切都发生在一个 View Controller 中。问题是,当我进行 HitTest 并尝试避开 backgroundView 时,由于图 block 位于该 View 的顶部,它仍然看到那些坐标并避免触摸移动事件,因为我返回 nil。

代码如下:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {

for (UIView *view in self.subviews) {

//This checks if touches are within the region of the custom view based on its cordinates.
if (CGRectContainsPoint(view.frame, point)) {
NSLog(@"touched the boat view %f %f and %f %f",view.frame.origin.x, view.frame.origin.y, point.x, point.y);

if ([view isEqual:backgroundView]) {
return nil;
}
else
return view;
}
}

return nil;
}

如果您看到我正在验证背景 View ,但由于我的图 block 位于背景 View 上,因此根据我的其他逻辑,这些图 block 不会被拖动。我已经尝试将 userInteractiveEnabled 设置为否,但这并不能正常工作。有什么建议吗?

最佳答案

你应该有一个 uiview 的子类并在这个子类上实现 hitTest :

@implementation EDPassTroughView

- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}
return self;
}

-(UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event{
UIView *hitView = [super hitTest:point withEvent:event];
if (hitView == self)
return nil;
else
return hitView;
}

@end

关于iphone - HitTest 以避免 subview 但希望另一个 subview 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17055612/

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