自定义UIView addTarget?

时间:2015-11-02 06:43:58

标签: ios swift uiview uicontrolevents

我正在创建自定义UIView。我想知道如何在此UIButton上复制UIView行为。

我希望能够像addTarget一样致电UIButton

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

self.sendActionsForControlEvents(UIControlEvents.TouchUpInside);

但我想在UIView上进行此操作,因为我在 XIB 文件上进行设计。

4 个答案:

答案 0 :(得分:10)

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

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

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

它的工作就像魅力一样。 快乐的编码。 希望它可以帮助

<强>更新

  

它在xCode 10.1和swift 4 +

中工作

答案 1 :(得分:6)

如果我们谈论swift3或swift 4

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

答案 2 :(得分:5)

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

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

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

答案 3 :(得分:5)

在Swift 4中,有一个新的初始化语法 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)