我有以下设置.
+- XXXCustomControl : UIControl -------+
| A |
| +- ContentView -------------------+|
| | ||
| | B ||
| | ||
| +---------------------------------+|
+--------------------------------------+
Run Code Online (Sandbox Code Playgroud)
一个XXXCustomControl,它是UIControl的子类.它包含一个名为contentView的子视图,其类型为UIView,其大小小于Control的区域.该视图具有.userInteractionEnabled = YES;
我需要将该属性设置为YES,因为水平滚动视图会偶尔放入其中,并且它们需要可滚动.如果超级视图(在我们的案例中,内容视图不允许用户交互,则会继承子视图.)但同时,当XXXCustomControl在其内容视图中不包含滚动视图时,不仅需要在区域A中而且还包含滚动视图.在B区
所以我在这里有一个"利益冲突"因为我要么
1)将内容视图设置为userInteractionEnabled = NO,然后我可以在A和B中的内容视图区域中点击空控件,但是我将放在那里的滚动视图将不可滚动.
2)将内容视图设置为userInteractionEnabled = YES但是,如果Control为空,我只能点击区域A来触发触摸事件.
我想出的一个想法是我默认将属性设置为NO,当我填充contentView时,我将其设置为yes.当我清除contentView时,我将属性设置为no.基本上我希望它一直设置为yes,当它为空时,强制contentView将touchUpInside事件传递给它的superview.
这可能吗?