user1282637 user1282637 - 2 months ago 25
iOS Question

Custom UIButton - IBAction not working

I have a default UIButton linked to an IBAction (touch up inside). This works fine, so I know my connection is OK. Once I change the UIButton class to my custom button, the IBAction is no longer triggered. Below is the code for my custom UIButton. Any ideas why this is happening?

import UIKit

class PrimaryButton: UIButton {

override init(frame: CGRect) {
super.init(frame: frame)

required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)

private func initView() {
let view = viewFromNibForClass()

view.frame = bounds

view.autoresizingMask = [


private func viewFromNibForClass() -> UIView {
let bundle = Bundle(for: type(of: self))
let nib = UINib(nibName: String(describing: type(of: self)), bundle: bundle)
let view = nib.instantiate(withOwner: self, options: nil).first as! UIView

return view

Avt Avt
Answer Source

Your code does not work because a button does not receive touches anymore. All touches are sent to the topmost custom view you add.

Set view.userInteractionEnabled = false to make it transparent to touches.