【问题标题】:Custom UIView addTarget?自定义 UIView addTarget?
【发布时间】:2015-11-02 06:43:58
【问题描述】:

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

我希望能够像UIButton 一样调用addTarget

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

self.sendActionsForControlEvents(UIControlEvents.TouchUpInside);

但我想在 UIView 上进行,因为我是在 XIB 文件上设计的。

【问题讨论】:

  • 添加带有自定义视图边界的 UIControl,背景颜色清除,然后添加 UIControl 的目标,否则将 TapGesture 添加到视图

标签: ios swift uiview uicontrolevents


【解决方案1】:

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

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

现在您可以将任何 IBAction 方法添加到此视图。

它的工作就像魅力。 快乐编码。 希望对你有帮助

更新

它在 xCode 10.1 和 swift 4+ 中工作

【讨论】:

  • 这非常棒,比其他解决方案好得多。以这种方式创建自定义按钮很容易,仅作为示例。这应该是正确的答案,因为在问题中请求了 touchUpInsideEvent
  • 很好的答案.. 除了它假设每个人都使用 storybuilder 来构建 UI。错误。
  • 这太棒了,它在没有 IB 的情况下也能工作,如果你只是声明你的类继承自 UIControl 而不是 UIView,你可以调用 addTarget!
  • @biomiker 你是对的,你可以选择使用 IB 或调用 addTarget!干杯快乐编码。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      【解决方案4】:

      在 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)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-10-12
        • 1970-01-01
        • 2014-12-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多