多级UIView(xib类型)不触发UITapGestureRecognizer
Multiple levels UIView (xib type) not trigger UITapGestureRecognizer
我想动态加载一些 UIView
,它们有些复杂,所以我花了几个小时制作 .xib 文件。
现在假设我有一个 finalView
,显示在屏幕上的 root/container 视图。
然后我addSubView(subViewLvOne)
,也可以是容器视图。
终于subViewOne.addSubView(subViewLvTwo)
,现在我们得到了所有需要的东西。
在屏幕上它是完美的,正是我想要显示的结果。 Two
在 One
内,One
在 final
内。
但是我无法通过 One
和 Two
获得任何点击事件。好像final
得到了所有的事件,但是里面有很多小的子视图,当然我希望他们有自己的事件。
我已经简化了我的真实情况,避免了很多不相关的细节,希望现在描述清楚。
欢迎任何建议,甚至 "use *** is better than .xib"。我自己,已经开始怀疑整个解决方案的方向了。
大约2个小时后,我得到了两个提示:
- .xib 文件中的根
UIView
,必须足够大。
我有一个宽度为200的UIView
,里面有一个UIButton
。在运行时,我改变了UIButton
的宽度约束来填满屏幕,显然大于200。然后发生了一件荒谬的事情:只有部分按钮可以触发点击事件。在这种情况下,根的宽度UIView
,即200像素。
- 当
init(frame:CGRect)
时,使宽度和高度值足够大。
起初,我从网上的一些例子中复制CGRect.Zero
。我的同事发现这会阻止点击事件。你可以只给一个1000宽1000高,外面的区域不会真正触发点击事件,同时UIView
可以正确点击
就这些了。
我想动态加载一些 UIView
,它们有些复杂,所以我花了几个小时制作 .xib 文件。
现在假设我有一个 finalView
,显示在屏幕上的 root/container 视图。
然后我addSubView(subViewLvOne)
,也可以是容器视图。
终于subViewOne.addSubView(subViewLvTwo)
,现在我们得到了所有需要的东西。
在屏幕上它是完美的,正是我想要显示的结果。 Two
在 One
内,One
在 final
内。
但是我无法通过 One
和 Two
获得任何点击事件。好像final
得到了所有的事件,但是里面有很多小的子视图,当然我希望他们有自己的事件。
我已经简化了我的真实情况,避免了很多不相关的细节,希望现在描述清楚。
欢迎任何建议,甚至 "use *** is better than .xib"。我自己,已经开始怀疑整个解决方案的方向了。
大约2个小时后,我得到了两个提示:
- .xib 文件中的根
UIView
,必须足够大。
我有一个宽度为200的UIView
,里面有一个UIButton
。在运行时,我改变了UIButton
的宽度约束来填满屏幕,显然大于200。然后发生了一件荒谬的事情:只有部分按钮可以触发点击事件。在这种情况下,根的宽度UIView
,即200像素。
- 当
init(frame:CGRect)
时,使宽度和高度值足够大。
起初,我从网上的一些例子中复制CGRect.Zero
。我的同事发现这会阻止点击事件。你可以只给一个1000宽1000高,外面的区域不会真正触发点击事件,同时UIView
可以正确点击
就这些了。