好吧,所以我有这些图像视图,我使用大量的代码移动(这是我不想重写我的整个脚本移动UIButton的原因,图像视图是子视图 - 它会搞砸一切)。
他们是小圈子:
bubble1.frame = CGRectMake(0, 0, screenSize.width*(21/330), screenSize.width*(21/330))
bubble1.center = CGPointMake(lineView.bounds.width * 0.2, lineView.bounds.height * 0.98) //change when make smaller
bubble1.layer.cornerRadius = bubble1.bounds.width * 0.5
bubble1.backgroundColor = colorWithHexString(chosenColor)
bubble1.userInteractionEnabled = false
//bubble1.alpha = 0.0
let bubbleBtn1 = UITapGestureRecognizer(target:self, action:#selector(HistoryViewController.bubble1Tap(_:)))
bubble1.addGestureRecognizer(bubbleBtn1)
正如你所看到的那样,他们有附加的tapgesturerecognizers,所以当他们被触摸时会触发一些东西。
这很有效,因为圆圈很小(它们需要那么小)很难触发 - 我已经四处寻找扩展识别器区域的方法无济于事。
然后我尝试在我的图像视图中添加一个更大的70x70按钮作为子视图,我知道添加了更大的按钮,因为我在它的圆圈顶部看到它是一个更大的正方形,除了某些原因它只触发了它action底层bubble1
是什么,使按钮无效。
如何在较小的图像视图不是的情况下使较大的按钮触发其动作?我看过How to increase selection area of UIButton?之类的Qs,但这更适合我的按钮在超级视图区域之外无效的问题。
我该如何解决这个问题?
答案 0 :(得分:1)
我建议转向相反的方向并创建一个包含按钮和bubble1作为subViews的视图。这就是UIView层次结构的工作方式,任何解决这个问题的解决方案都将是脆弱的,违背API的设计理念:)
要解决任何中心问题,您可以将气泡的中心设置为它的超级视图中心,理想情况下可以使用布局约束来处理