我正在创建一个自定义UIView
. 我想知道如何复制此UIButton
行为UIView
。
我希望能够像调用addTarget
它一样调用它UIButton
。
我知道我可以继承UIControl
并调用
self.sendActionsForControlEvents(UIControlEvents.TouchUpInside);
但我想这样做,UIView
因为我在XIB文件上设计它。
我正在创建一个自定义UIView
. 我想知道如何复制此UIButton
行为UIView
。
我希望能够像调用addTarget
它一样调用它UIButton
。
我知道我可以继承UIControl
并调用
self.sendActionsForControlEvents(UIControlEvents.TouchUpInside);
但我想这样做,UIView
因为我在XIB文件上设计它。
有一种简单的方法可以实现这一目标。
- 转到您班级的界面生成器
- 选择您要添加操作的视图
- 打开 IDENTITY INSPECTOR,将类从 UIView 更改为“UIControl”。
现在您可以将任何 IBAction 方法添加到此视图。
它的工作就像魅力。快乐的编码。希望它可以帮助
更新
它在 xCode 10.1 和 swift 4+ 中工作
如果我们谈论 swift3 或 swift 4 这会更好
let gesture:UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(targetViewDidTapped))
gesture.numberOfTapsRequired = 1
targetView?.isUserInteractionEnabled = true
targetView?.addGestureRecognizer(gesture)
您可以使用UITapGestureRecognizer
,以编程方式将其添加到视图中,如下所示
self.userInteractionEnabled = true
let gesture:UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(viewTapped))
gesture.numberOfTapsRequired = 1
self.addGestureRecognizer(gesture)
并实现选择器,您还可以使用 xib 或 Interface Builder 文件添加手势以查看。
在 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)