多级UIView(xib类型)不会触发UITapGestureRecognizer

时间:2016-03-11 02:25:31

标签: ios swift uiview uibutton uitapgesturerecognizer

我想动态加载一些UIView,它们有点复杂,所以我花了几个小时制作.xib文件。

现在假设我有一个finalView,它以屏幕上显示的根/容器视图显示。 然后我addSubView(subViewLvOne),也可以是容器视图。 最后subViewOne.addSubView(subViewLvTwo),现在我们得到了所有需要。

在屏幕上它是完美的,正是我想要展示的结果。 Two内的OneOne内的final

enter image description here

但我无法通过OneTwo获得任何点击事件。好像final得到了所有的事件,但由于里面有许多小的子视图,我当然希望他们得到自己的事件。

我简化了我的实际情况,避免了许多不相关的细节,希望现在描述清楚。

欢迎提出任何建议,即使“使用***优于.xib”也是如此。我自己,已经开始怀疑整个解决方案的方向。

1 个答案:

答案 0 :(得分:0)

大约2个小时后,我得到了两个提示:

  1. .xib文件中的根UIView必须足够大。
  2. 我有UIView,宽度为200,内部有UIButton。在运行时,我更改UIButton的宽度约束以填充屏幕,显然大于200.然后发生一些荒谬的事情:只有部分按钮可以触发点击事件。在这种情况下,根UIView的宽度,即200像素。

    1. init(frame:CGRect)时,请使宽度和高度值足够大。
    2. 首先,我在网上从一些例子中复制CGRect.Zero。我的同事发现这将阻止点击事件。您可以提供1000宽度和1000高度,外部区域不会真正触发点击事件,同时可以正确点击UIView

      这就是全部。