我为已添加容器视图的应用程序创建了一个公共视图。
这是一个混乱的结构也是非常常见的问题,但是我被困了一天......
在我的案例中,层次结构为
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和所有其他常见的事情。现在我没有弄错。此结构已经在应用程序中使用,因此我无法更改它。我只需解决此问题。
答案 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];
然后点击按钮即可。