gpt4 book ai didi

objective-c - 添加 SubView 后在 SuperView 中获取 Touches

转载 作者:可可西里 更新时间:2023-11-01 05:47:00 25 4
gpt4 key购买 nike

从 XCode 4.2 中的单一 View iOS 模板开始,我在我的 .xib 中添加了第二个 View ,在主视图上添加了一个“ super ”按钮,在 subview 上添加了一个“子”按钮。我希望能够同时单击这两个按钮。

在 View Controller 的界面中,我添加了:

IBOutlet UIView *subView;

然后在我的 View Controller 的 viewDidLoad 方法中,我添加:

 [self.view addSubview:subView];

在[super viewDidLoad]之后;

subView 的背景为“clear”,两个窗口都设置为“User Interaction Enabled”。

当我运行应用程序时,只有“子”按钮是可点击的。我可以看到“ super ”按钮,但它似乎没有接收到触摸,据我从 Apple 的文档中可以看出,这应该是默认行为( View 的透明区域应该允许触摸通过)。

最佳答案

这不会发生,如果你把一个 View 放在另一个 View 前面,后面的 View 将不会接收到触摸。

您可以在前 View 中禁用用户交互,以便后 View 接收触摸。

但我认为你想要 frontview 和 backview 可点击,在这种情况下你需要做的是获取触摸并将其发送到 backview,并在 backview 中处理它。

我不知道你想做什么,但我认为,你可能可以做出比这更好的选择。

您可以在 stackoverflow 中查看此问题: detect touch on a view behind another view?

编辑:

您有很多选择来发送触摸。

你可以做类似的事情(这不是一个好的选择):

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
for (UITouch *touch in touches) {
for(UIView* v in self.view.subviews){
if([v pointInside:[touch locationInView:self.view] withEvent:event]){
if ([v isKindOfClass:[UIButton class]]) {
[(UIButton*)v sendActionsForControlEvents:UIControlEventTouchUpInside];
}

}
}
}
}

您还可以编辑 View 框架,使 View 不会覆盖按钮。

您还可以将按钮带到新 subview 的前面,执行以下操作:

[self.view addSubview:yourSubview];
[self.view bringSubviewToFront:yourButton];

你只需要发挥你的创造力;)

关于objective-c - 添加 SubView 后在 SuperView 中获取 Touches,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9833078/

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