Swift - 添加比正在添加的视图更大的UIButton?需要更大的选择区域?

时间:2016-08-01 19:10:01

标签: swift uibutton uitapgesturerecognizer

好吧,所以我有这些图像视图,我使用大量的代码移动(这是我不想重写我的整个脚本移动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,但这更适合我的按钮在超级视图区域之外无效的问题。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

我建议转向相反的方向并创建一个包含按钮和bubble1作为subViews的视图。这就是UIView层次结构的工作方式,任何解决这个问题的解决方案都将是脆弱的,违背API的设计理念:)

要解决任何中心问题,您可以将气泡的中心设置为它的超级视图中心,理想情况下可以使用布局约束来处理