未在容器视图中添加的视图中获取按钮单击事件

时间:2013-07-26 04:10:44

标签: iphone objective-c uiview uibutton container-view

我为已添加容器视图的应用程序创建了一个公共视图。

这是一个混乱的结构也是非常常见的问题,但是我被困了一天......

在我的案例中,层次结构为

ViewController's View -> (within that) commonview's container view -> (within that)I am adding one another view(base view) with two views.(view 1,view 2)

 [self.commonView.containerView addSubview:baseView];
 [baseView addSubview:view1];
 [baseView addSubview:view2];
 [self.view addSubview:self.commonView];

为此,我获得了view1按钮的点击事件,但没有获得view2按钮的点击事件。

我检查了userInteraction和所有其他常见的事情。现在我没有弄错。此结构已经在应用程序中使用,因此我无法更改它。我只需解决此问题。

3 个答案:

答案 0 :(得分:1)

请检查,如果您已将Gesture应用于任何视图,请将cancelsTouchesInView手势属性设为NO。默认情况下,它是TRUE,因此当手势取消其内部视图的触摸时,该视图内的按钮可能无法触摸。 如果不是这种情况,那么将Gesture应用于您的按钮,因为当存在许多控件层次时会发生这种情况。

答案 1 :(得分:0)

我认为你应该尝试将你的子视图(即view1)放在前面,因为它被另一个子视图(即view2)隐藏了

您应该首先尝试使用[self.view bringSubviewToFront:self.commonView.containerView ];

如果这样可行,那么它是好的,否则尝试使用如下所示

[self.view bringSubviewToFront:self.commonView.containerView ];
[self.view bringSubviewToFront:view1];

希望这对你有所帮助!

享受编程!

答案 2 :(得分:0)

您需要按相应的顺序添加。

首先添加基本视图1& view2进入baseView

[baseView addSubview:view1];
[baseView addSubview:view2];

然后将baseView添加到ContainerView

[self.commonView.containerView addSubview:baseView];

最后在mainView中添加commonView

[self.view addSubview:self.commonView];

注意: -

如果要将viewcontroller添加到当前viewcontroller中,则需要编写下面的代码。

[self addChildViewController: yourviewController];

然后点击按钮即可。