相关疑难解决方法(0)

userInteractionEnabled = YES时如何将触摸事件传递给superview?

我有以下设置.

+- 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.

这可能吗?

cocoa-touch objective-c ios swift

14
推荐指数
1
解决办法
1万
查看次数

标签 统计

cocoa-touch ×1

ios ×1

objective-c ×1

swift ×1