gpt4 book ai didi

iphone - 检测其他 UIView 中是否触摸了某个 UIView

转载 作者:行者123 更新时间:2023-12-03 18:15:04 25 4
gpt4 key购买 nike

我有 3 个 UIView,分层在一个大 uiview 之上。我想知道用户是否触摸了最上面的一个而不关心其他的。我将在第二个 UIView 中有几个按钮,在第三个 UIView 中有一个 UITable。

问题是我在第一个 View 上打开 userInteractionEngabled 并且有效,但即使我将其关闭,所有其他 View 也会以相同的方式响应。如果我在 self.view 上禁用 userInteractionEnabled ,它们都不会响应。我也无法检测到 TouchBegan 委托(delegate)方法中触摸了哪个 View 。

我的代码:

UIView *aView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 150)];
aView = userInteractionEnabled = YES;
[self.view addSubview:aView];

UIView *bView = [[UIView alloc] initWithFrame:CGRectMake(0, 150, 320, 50)];
bView.userInteractionEnabled = NO;
[self.view addSubview:bView];

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
//This gets called for a touch anywhere
}

最佳答案

为了检查另一个 View 中的某个 View 是否被触摸,您可以使用 hitTest。

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

在您的touchesBegan的自定义实现中,检查touches集中的每个触摸。 hitTest 方法的点可以使用

获得
- (CGPoint)locationInView:(UIView *)view;

方法,其中 View 是您的 super View (包含其他 View 的 View )。

编辑:这是一个快速的自定义实现:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
CGPoint locationPoint = [[touches anyObject] locationInView:self];
UIView* viewYouWishToObtain = [self hitTest:locationPoint withEvent:event];
}

希望这对您有帮助,保罗

关于iphone - 检测其他 UIView 中是否触摸了某个 UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2793242/

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