这里有一个问题要问你:
我有一个我们称之为bottomButton的UIButton。我还有另一个UIButton,我们称之为topButton。我想要做的是将topButton放在bottomButton之上,这样当您点击topButton时,它的操作就会被执行。我遇到的问题是,当我点击topButton时,它的bottomButton操作正在被执行。
因此,我想知道的是,是否可以将一个UIButton放在另一个UIButton上,以便在点击时,只有顶部的UIButton会注册点击。懂吗?
感谢您的任何意见!
发布于 2011-09-01 02:16:52
是的,这是可能的。有三件事需要检查:
1)在视图堆栈中,topButton实际上位于bottomButton之上吗?
在这方面,[UIView bringSubviewToFront:]可能会有所帮助。
2) topButton是否足够大,可以注册tap?
我尝试使topButton大于44x44,看看这是否有帮助。
3)确保topButton已开启。
编辑
我刚刚看到你关于将topButton添加为bottomButton的子视图的评论,这可能是问题的一部分。您可以尝试将bottomButton和topButton都添加到新的UIView中,然后在以前使用bottomButton的位置添加新的UIView。
发布于 2011-09-01 02:32:46
如果顶部按钮是底部的子视图,它不会得到传递给它的触摸事件,因为底部按钮的hitTest:withEvent:首先被调用,它将返回YES。
您可以尝试重写hitTest:withEvent:让底部按钮在其子视图上调用hitTest (通常它的子视图中没有UIControls ),如果有匹配,则返回该子视图。
发布于 2011-09-01 02:27:50
啊,我现在看了你的评论。由于要将一个按钮添加到另一个按钮,因此需要让superview截获触摸事件。
阅读这篇文章:How to make a superview intercept button touch events?
https://stackoverflow.com/questions/7261423
复制相似问题