Swift,单击时自定义UIButton不起作用

我有一个用xib文件创build的自定义UIButton。 当我在我的视图上使用自定义button时,按下button时它不起作用。

我的RoundBtn.swift文件:

import UIKit @IBDesignable class RoundBtn: UIButton { var nibName = "RoundBtn" @IBOutlet weak var btnImageView: UIImageView! @IBOutlet weak var btnLabel: UILabel! @IBInspectable var image: UIImage? { get { return btnImageView.image } set(image) { btnImageView.image = image } } @IBInspectable var label: String? { get { return btnLabel.text } set(label) { btnLabel.text = label } } override init(frame: CGRect) { super.init(frame: frame) setup() } required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) setup() } func setup() { let view = loadViewFromNib() view.frame = self.bounds view.autoresizingMask = [.FlexibleWidth, .FlexibleHeight] btnImageView.layer.cornerRadius = 60/2 btnImageView.layer.borderColor = UIColor(red: 5/255, green: 66/255, blue: 38/255, alpha: 1).CGColor btnImageView.layer.borderWidth = 2 btnLabel.font = UIFont.boldSystemFontOfSize(14.0) btnImageView.userInteractionEnabled = true btnLabel.userInteractionEnabled = true view.userInteractionEnabled = true addSubview(view) } func loadViewFromNib() -> UIButton { let bundle = NSBundle(forClass: self.dynamicType) let nib = UINib(nibName: nibName, bundle: bundle) let view = nib.instantiateWithOwner(self, options: nil)[0] as! UIButton return view } } 

我的RoundBtn.xib文件:

在这里输入图像说明

查看我使用我的自定义button的位置:

在这里输入图像说明

我在所有视图组件上启用了userInteractionEnabled 。 当我点击我的自定义button,它不起作用。 我尝试通过定义点击编程和通过定义行动segue(显示)。

 @IBAction func myCartBtnPressed(sender: AnyObject) { print("my cart btn pressed") } 

我认为这是因为你用userInteractionEnabled添加了一些UIViews子视图到你当前的UIButton,这意味着他们正在处理用户input。

如果你这样做:

 view.userInteractionEnabled = false 

RoundBtn本身将获得所有的触摸事件,而不是你在上面的这个UIViews。

引用@fdiaz的答案。 Swift 4符号。

相反,如果将一些UIButton(或用户交互式视图)附加到UIImageView,则必须将其isUserInteractionEnabled = true以使触摸遍历层次结构向下到UIButton。

Interesting Posts