JayVDiyk
JayVDiyk

Reputation: 4487

Custom UIView addTarget?

I am creating a custom UIView. I am wondering how can I replicate the UIButton behavior on this UIView.

I would like to be able to call addTarget to it like an UIButton.

I know that I can subclass UIControl and call

self.sendActionsForControlEvents(UIControlEvents.TouchUpInside);

but I would like to do it on an UIView since I am designing it on a XIB file.

Upvotes: 9

Views: 19000

Answers (4)

Subhash Sharma
Subhash Sharma

Reputation: 745

There is an easy way to achieve this.

  1. Go to Interface builder of your class
  2. Select the view u want to add action
  3. open IDENTITY INSPECTOR, change class from UIView to 'UIControl'.

Now u can add any IBAction method to this view.

Its working like charm. happy coding. hope it may help

Update

its working in xCode 10.1 and swift 4+

Upvotes: 16

Agisight
Agisight

Reputation: 1818

In Swift 4 there is new syntax of init UITapGestureRecognizer:

let gesture:UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: Selector("viewTapped:"))
// or declare like this
let gesture:UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(YourClass.viewTapped(gesture:)))
yourView.addGestureRecognizer(gesture)

Upvotes: 6

Saif
Saif

Reputation: 2968

you can use UITapGestureRecognizer, add it on view programmatically as follows

self.userInteractionEnabled = true
let gesture:UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(viewTapped))
gesture.numberOfTapsRequired = 1
self.addGestureRecognizer(gesture)

and implement the selector, You can also add gesture to view using xib or Interface Builder file.

Upvotes: 8

daxh
daxh

Reputation: 571

This will be better if we talking about swift3 or swift 4

let gesture:UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(targetViewDidTapped))
gesture.numberOfTapsRequired = 1
targetView?.isUserInteractionEnabled = true
targetView?.addGestureRecognizer(gesture)

Upvotes: 10

Related Questions