点击UIButton虽然在视觉上接收到该事件,但并未调用其动作

时间:2015-11-25 18:24:48

标签: ios swift uibutton uicollectionviewcell

我在xib文件中有一个视图,其中包含一个按钮和其他两个视图,它们不重叠。视图文件的所有者是从UIViewController派生的自定义类。自定义视图控制器由以下代码以编程方式创建:

let sfvc = SelezioneFascicoloViewController(nibName:  "SelezioneFascicoloView", bundle: nil)
viewObject.addSubview(sfvc.view)
sfvc.updateWithAttributes(attrs, inFascicolo: self.fascicolo!)

viewObject是自定义UICollectionViewCell中包含的视图。

该按钮具有连接到touchDown事件的处理程序(但任何其他事件产生相同的问题)并且它在自定义UIViewController(SelezioneFascicoloViewController)中定义 我已经为按钮标记了showsTouchOnHighlight,只是为了看它是否收到了这个事件。

嗯,视图显示正确,如果我点击按钮,我可以看到发光,但处理程序没有被调用。 层次结构中的所有视图都将UserInteractionEnabled设置为true,并且它们的大小正确,因此按钮不在superview框架之外。

此外,我在UICollectionViewController派生类中有一个包含UICollectionViewCell的UITapGestureRecognizer,如果我点击按钮外部,则会触发其处理程序,但是当我点击按钮内部时则不会触发,这是应该的。 有人可以就这类问题给我一些建议吗?

编辑:添加了截图

Interface Builder screen shot

1 个答案:

答案 0 :(得分:0)

感谢beyowulf。 如果我将SelezioneFascicoloViewController添加为子视图控制器,这一切都有效:

let sfvc = SelezioneFascicoloViewController(nibName: "SelezioneFascicoloView", bundle: nil)
self.addChildViewController(sfvc)
viewObject.addSubview(sfvc.view)
sfvc.didMoveToParentViewController(self)
sfvc.updateWithAttributes(attrs, inFascicolo: self.fascicolo!)