2

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

这是一个令人困惑的结构,对于 SO 来说也是非常常见的问题,但我从一天开始就被困住了..

在我的情况下,层次结构是

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 和所有其他常见的东西。现在我没有得到什么是错的。此外,此结构已在应用程序中使用,因此我无法更改它。我只需要解决此问题。

4

3 回答 3

2

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

于 2013-07-26T05:14:27.500 回答
0

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

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

如果这可行,那么很好,否则尝试使用这两者,如下所示

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

希望这对您有帮助!

享受编程!

于 2013-07-26T04:41:51.893 回答
0

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

首先将base view1 & view2 添加到baseView

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

然后将 baseView 添加到 ContainerView

[self.commonView.containerView addSubview:baseView];

最后在mainView中添加commonView

[self.view addSubview:self.commonView];

笔记 :-

如果要将视图控制器添加到当前视图控制器中,则需要编写以下代码。

[self addChildViewController: yourviewController];

然后您的按钮单击将起作用。

于 2013-07-26T05:21:03.683 回答