【问题标题】:Detecting tap gesture that is not on a UISubView检测不在 UISubView 上的点击手势
【发布时间】:2019-01-09 09:13:05
【问题描述】:

我有三个 UIButton 实例:buttonAbuttonBbuttonC。每个按钮都有自己的中心并占据一定的大小。

我希望这些按钮“做某事”(即改变alpha 值)当屏幕被点击时任何地方除了按钮所在的位置,这样人们就可以按下按钮触发他们的actions 而不会发生“做这件事”。

请问最好的方法是什么?

【问题讨论】:

  • 你能多说一点你的意思吗?当点击屏幕其他地方时,按钮如何“做某事”?肯定是 elsewhere 会“做某事”。如果我在一个随机点上点击,我们怎么会知道 哪个 按钮应该“做某事”?
  • @matt 嗨——希望这能解决问题吗?说当背景改变时改变按钮的alpha值,但保持按钮工作......
  • 您可以在视图中添加点击手势来[做某事]

标签: ios swift uiview uigesturerecognizer


【解决方案1】:

这与任何其他水龙头一样工作。只需给“其他地方”(例如视图控制器的主视图)一个 UITapGestureRecognizer 并在用户点击它时做出响应。当您点击其中一个按钮时不会触发它,因为在这种情况下,按钮会吃掉点击。

【讨论】:

    【解决方案2】:

    试试这样的:

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        // Get location of touch
        let pos = touches.first?.location(in: self.view)
    
        if !b.frame.contains(pos) && !b2.frame.contains(pos) && !b3.frame.contains(pos) {
            // Change alpha or do something else
        }
    }
    

    其中 b、b2 和 b3 是您的每个按钮。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-25
      • 2012-02-29
      • 1970-01-01
      • 2016-09-13
      • 1970-01-01
      • 2019-10-24
      • 1970-01-01
      • 2012-05-14
      相关资源
      最近更新 更多