自定义UIView addTarget?

Jay*_*iyk 7 uiview ios uicontrolevents swift

我正在创建一个自定义UIView.我想知道如何复制这个UIButton行为UIView.

我希望能够addTarget像它一样打电话给它UIButton.

我知道我可以继承UIControl并调用

self.sendActionsForControlEvents(UIControlEvents.TouchUpInside);
Run Code Online (Sandbox Code Playgroud)

但是我想UIView在一个XIB文件上设计它.

Sub*_*rma 11

有一种简单的方法可以实现这一目标.

  1. 转到类的"界面"构建器
  2. 选择您要添加操作的视图
  3. 打开IDENTITY INSPECTOR,将类从UIView更改为'UIControl'.

现在你可以在这个视图中添加任何IBAction方法.

它的工作就像魅力.快乐的编码.希望它可能有所帮助

更新

它在xCode 10.1和swift 4+中工作


dax*_*axh 7

如果我们谈论swift3或swift 4,这会更好

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


Sai*_*aif 5

您可以使用UITapGestureRecognizer,以编程方式将其添加到视图中,如下所示

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

并实现选择器,还可以添加手势以使用xib或Interface Builder文件进行查看。


Agi*_*ght 5

在Swift 4中,有一些新的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)
Run Code Online (Sandbox Code Playgroud)