【问题标题】:part of UIButton is not responsive to touch eventsUIButton 的一部分不响应触摸事件
【发布时间】:2016-01-06 01:42:34
【问题描述】:

我创建了一个带有 UIButton 类型子视图的 UIView。按钮的大小大于视图的大小。每当我触摸按钮时,只有与 superview 大小相同的部分才会响应触摸事件。我创建了一个视图层次结构图来向您展示我的意思:

只有按钮的红色部分会响应触摸事件。这是怎么回事,我该如何解决?

这是 viewDidLoad 中的代码,我在其中以编程方式创建按钮

let button = UIButton(frame: CGRectMake(-8, -8, 52, 52))
        moveView.addSubview(button)
        button.setBackgroundImage(UIImage(named: "trIcon"), forState: UIControlState.Normal)
        button.adjustsImageWhenHighlighted = false
        button.addTarget(self, action: "gogo", forControlEvents: UIControlEvents.TouchUpInside)
        moveView.clipsToBounds = false

UIView 是在故事板中创建的。

【问题讨论】:

  • 嗯,这不是它的工作原理吗?由于您的按钮放置在 UIView 中,因此只有 UIView 中的区域才会接受触摸。
  • 您的超级视图真的必须比按钮小吗?为什么?我不知道它应该如何工作,但这种行为并不让我感到惊讶。
  • 如果还没有解决,“moveView”的框架是什么
  • moveView 是较低的绿色视图。它的大小比按钮的小

标签: ios uiview uibutton touch


【解决方案1】:

在我尝试您的编码时请按照说明进行操作

    let button = UIButton(frame: CGRectMake(0, 0, giveValueLessthanMoveViewWidthSize, giveValueLessthanMoveViewHeightSize)) //Whatever give value less than your view size(x,y,width,height)

    button.setBackgroundImage(UIImage(named: "trIcon"), forState: UIControlState.Normal)

    button.adjustsImageWhenHighlighted = false

    button.backgroundColor = UIColor.blueColor()

    button.addTarget(self, action: "gogo:", forControlEvents: UIControlEvents.TouchUpInside)

    moveView.clipsToBounds = false

    moveView.addSubview(button)

然后按钮动作方法

   func gogo(sender:UIButton!)
   {
     println("Button Clicked")
   }

【讨论】:

  • 感谢您的光临。我实际上想创建比视图更大的按钮。
  • 但是如果你这样创建,按钮触摸响应仅取决于你的视图大小。因为你将按钮添加到视图中。moveView 是 SUPERCLASS 并且按钮是 SUBCLASS。子类必须在超类下。
  • 如果要创建非常大的按钮,首先需要先创建更大或更大的视图。
  • 请勾选我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-12
  • 2016-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-30
  • 2013-09-26
相关资源
最近更新 更多