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

Multiple levels UIView (xib type) not trigger UITapGestureRecognizer

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

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

在屏幕上它是完美的,正是我想要显示的结果。 TwoOne 内,Onefinal 内。

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

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

欢迎任何建议,甚至 "use *** is better than .xib"。我自己,已经开始怀疑整个解决方案的方向了。

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

  1. .xib 文件中的根 UIView,必须足够大。

我有一个宽度为200的UIView,里面有一个UIButton。在运行时,我改变了UIButton的宽度约束来填满屏幕,显然大于200。然后发生了一件荒谬的事情:只有部分按钮可以触发点击事件。在这种情况下,根的宽度UIView,即200像素。

  1. init(frame:CGRect)时,使宽度和高度值足够大。

起初,我从网上的一些例子中复制CGRect.Zero。我的同事发现这会阻止点击事件。你可以只给一个1000宽1000高,外面的区域不会真正触发点击事件,同时UIView可以正确点击

就这些了。